programing

병합 충돌을 초래하는 지트 스택 팝업 실행 취소

muds 2023. 4. 26. 23:50
반응형

병합 충돌을 초래하는 지트 스택 팝업 실행 취소

저는 제가 오래된 주제 분기에 있다는 것을 깨닫지 못한 채 코드베이스를 변경하기 시작했습니다.이전하기 위해, 저는 그것들을 저장한 다음 마스터의 새로운 지점에 적용하고 싶었습니다.사용한git stash pop새 분기를 만들기 전에 새 변경사항을 마스터로 가져오지 않았다는 사실을 잊고 진행 중인 변경사항을 이 새 분기로 전송합니다.이로 인해 병합 충돌이 많이 발생하고 (팝을 사용한 이후) 변경 사항의 전체 저장소가 손실되었습니다.

새 분기를 올바르게 재생성한 후 저장된 변경사항을 올바르게 적용하려면 어떻게 해야 합니까?

밝혀진 바에 따르면, Git은 깨끗하게 바르지 않으면 재고를 떨어뜨리지 않을 정도로 똑똑합니다.저는 다음 단계를 통해 원하는 상태에 도달할 수 있었습니다.

  1. 병합 충돌의 스테이징을 해제하는 방법git reset HEAD .(후행 도트 참고)
  2. 충돌된 병합을 저장하는 방법(만약의 경우) git stash
  3. 마스터로 돌아가기git checkout master
  4. 최신 변경사항을 끌어오기git fetch upstream; git merge upstream/master
  5. 새 분기 수정하기git checkout new-branch; git rebase master
  6. 올바른 저장된 변경 사항(스택에서 두 번째 변경 사항)을 적용하려면: git stash apply stash@{1}

다행히도.git stash pop충돌의 경우에는 재고를 변경하지 않습니다!

걱정할 것 없이 코드를 정리하고 다시 시도하십시오.

코드베이스가 이전에 깨끗했다고 가정하면 다음과 같이 해당 상태로 돌아갈 수 있습니다.git checkout -f
그런 다음 잊어버린 것을 수행합니다. 예를 들어,git merge missing-branch
그 후에 그냥 불.git stash pop그리고 당신은 이전에 충돌했던 동일한 재고를 얻습니다.

명심할 사항:스택은 안전하지만 작업 디렉토리에서 커밋되지 않은 변경사항은 물론 안전하지 않습니다.그들은 엉망이 될 수 있습니다.

가장 간단한 명령은 다음과 같은 모든 곳에서 작동합니다.git stash pop,git merge기타.

하지만 조심하세요!추적되지 않은 파일의 모든 변경 내용이 손실됩니다.추적된 파일이 그대로 유지됩니다.

git reset --merge

여기에 나와 있는 지침은 조금 복잡하기 때문에 좀 더 간단한 것을 제공하려고 합니다.

  1. git reset HEAD --hard현재 분기에 대한 모든 변경 사항을 취소합니다.

  2. ...필요에 따라 중간 작업을 수행합니다.

  3. git stash pop나중에 준비가 되면 다시 저장

git checkout -f

이전 상태가 깨끗할 경우 작동해야 합니다.

주의: 파일에 대한 추적되지 않은 모든 변경 사항이 손실됩니다.

저와 마찬가지로 유지하고자 하는 단계별 변경사항이 있는 경우 각 개별 파일의 알려진 안정적인 버전을 체크아웃하여 해당 작업이 손실되는 것을 방지할 수 있습니다.stash그 파일들이 당신이 작업하던 파일들과 다르길 바랍니다.또한, 이것이 우리가 가는 동안 작은 약속을 사용하는 이유이다, 멍청아.

git checkout main -- <file_with_conflicts>

언급URL : https://stackoverflow.com/questions/22207256/undo-git-stash-pop-that-results-in-merge-conflict

반응형