반응형
우발적인 Git Stash Pop 실행 취소
복잡한 병합을 수행하기 전에 로컬 변경 사항을 저장하고 병합을 수행한 다음 실행하기 전에 커밋하는 것을 어리석게 잊어버렸습니다.git stash pop
이 팝업은 추적하기 어려운 몇 가지 문제(큰 코드베이스의 잘못된 메서드 호출)를 발생시켰습니다.도망친git stash show
그래서 최소한 어떤 파일이 변경되었는지는 알고 있습니다.다른 것이 없다면, 저는 이것이 더 많은 일을 해야 할 교훈이라고 생각합니다.
제 질문: 병합을 취소하지 않고 스택 팝을 취소할 수 있습니까?
Git에서 손실된 저장소를 복구하는 방법을 사용하여 저장한 저장소를 찾아 보십시오.인덱스와 작업 복사본을 보존하기 때문에(인덱스 커밋이 종종 비어 있음), 저는 스택에 대해 항상 두 개의 커밋이 있다고 생각합니다.그리고나서git show
그들은 차이점과 사용법을 봅니다.patch -R
그것들을 적용하지 않습니다.
부터git stash --help
Recovering stashes that were cleared/dropped erroneously
If you mistakenly drop or clear stashes, they cannot be recovered through the normal safety mechanisms. However, you can try the
following incantation to get a list of stashes that are still in your repository, but not reachable any more:
git fsck --unreachable |
grep commit | cut -d\ -f3 |
xargs git log --merges --no-walk --grep=WIP
이것은 같은 시나리오로 받아들여진 답변보다 더 도움이 되었습니다.
병합이 너무 복잡하지 않은 경우 다른 옵션은 다음과 같습니다.
- "gitstash"를 사용하여 병합 변경 사항을 포함한 모든 변경 사항을 다시 stash로 이동
- 병합을 다시 실행하고 변경 내용을 커밋합니다(삭제된 스택의 변경 내용 제외).
- 이제 파일이 동일하므로 이전 병합의 모든 변경 사항을 무시하는 "gitstash pop"을 실행합니다.
그 후에는 너무 일찍 삭제한 저장소의 변경 사항만 남게 됩니다.
언급URL : https://stackoverflow.com/questions/6543519/undoing-accidental-git-stash-pop
반응형
'programing' 카테고리의 다른 글
커밋 범위 git 되돌리기 (0) | 2023.07.10 |
---|---|
10.4.14 버전에서 mariaDB 버전을 아는 방법 - MariaDB (0) | 2023.07.10 |
저장 프로시저에서 목록을 매개 변수로 전달하려면 어떻게 해야 합니까? (0) | 2023.07.10 |
리눅스에서 스레드 이름을 지정하는 방법은 무엇입니까? (0) | 2023.07.10 |
Apple은 사용자가 개인 API를 사용하고 있는지 어떻게 알 수 있습니까? (0) | 2023.07.10 |