실수로 git stash pop 실행 취소 문제 (큰

복잡한 병합을 수행하기 전에 로컬 변경 사항을 숨기고 병합을 수행 한 다음 실행하기 전에 커밋하는 것을 어리석게 잊었습니다 git stash pop. 팝은 추적하기 어려운 몇 가지 문제 (큰 코드베이스에서 잘못된 메소드 호출)를 생성했습니다. 나는을 실행 git stash show했으므로 적어도 어떤 파일이 변경되었는지 알고 있습니다. 다른 것이 없다면, 이것이 더 커밋하는 교훈이라고 생각합니다.

내 질문 : 병합을 취소하지 않고 숨김 팝을 취소 할 수 있습니까?



답변

Git에서 떨어진 스테이크를 복구하는 방법을 사용해보십시오 . 튀어 나온 은신처를 찾으십시오. 인덱스와 작업 복사본을 유지하기 때문에 숨김에 대해 항상 두 개의 커밋이 있다고 생각합니다 (따라서 인덱스 커밋은 비어있을 것입니다). 그런 다음 git showdiff를보고 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

이것은 동일한 시나리오에서 허용되는 답변보다 나에게 도움이되었습니다.


답변

병합이 너무 복잡하지 않은 경우 다른 옵션은 다음과 같습니다.

  1. “git stash”를 사용하여 병합 변경 사항을 포함하여 모든 변경 사항을 숨김으로 다시 이동하십시오.
  2. 병합을 다시 실행하고 삭제 된 숨김의 변경 사항없이 변경 사항을 커미트하십시오.
  3. 파일이 지금 동일하므로 이전 병합의 모든 변경 사항을 무시해야하는 “git stash pop”을 실행하십시오.

그 후에 당신은 당신이 너무 일찍 떨어 뜨린 은신처의 변경 사항 만 남게됩니다.