병합 충돌을 초래하는 지트 스택 팝업 실행 취소
저는 제가 오래된 주제 분기에 있다는 것을 깨닫지 못한 채 코드베이스를 변경하기 시작했습니다.이전하기 위해, 저는 그것들을 저장한 다음 마스터의 새로운 지점에 적용하고 싶었습니다.사용한git stash pop
새 분기를 만들기 전에 새 변경사항을 마스터로 가져오지 않았다는 사실을 잊고 진행 중인 변경사항을 이 새 분기로 전송합니다.이로 인해 병합 충돌이 많이 발생하고 (팝을 사용한 이후) 변경 사항의 전체 저장소가 손실되었습니다.
새 분기를 올바르게 재생성한 후 저장된 변경사항을 올바르게 적용하려면 어떻게 해야 합니까?
밝혀진 바에 따르면, Git은 깨끗하게 바르지 않으면 재고를 떨어뜨리지 않을 정도로 똑똑합니다.저는 다음 단계를 통해 원하는 상태에 도달할 수 있었습니다.
- 병합 충돌의 스테이징을 해제하는 방법
git reset HEAD .
(후행 도트 참고) - 충돌된 병합을 저장하는 방법(만약의 경우)
git stash
- 마스터로 돌아가기
git checkout master
- 최신 변경사항을 끌어오기
git fetch upstream; git merge upstream/master
- 새 분기 수정하기
git checkout new-branch; git rebase master
- 올바른 저장된 변경 사항(스택에서 두 번째 변경 사항)을 적용하려면:
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
여기에 나와 있는 지침은 조금 복잡하기 때문에 좀 더 간단한 것을 제공하려고 합니다.
git reset HEAD --hard
현재 분기에 대한 모든 변경 사항을 취소합니다....
필요에 따라 중간 작업을 수행합니다.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
'programing' 카테고리의 다른 글
비웹 SQL 주입 (0) | 2023.04.26 |
---|---|
ADO를 설정하려면 어떻게 해야 합니까?윈도우즈 Azure(Preview) 관리 포털을 통한 NET Entity Framework 연결 문자열? (0) | 2023.04.26 |
왼쪽에 소스 코드를 들여쓰기 위한 이클립스 키보드 단축키? (0) | 2023.04.26 |
Windows 7(윈도우 7) 작업 표시줄에서 Eclipse를 올바르게 작동시키는 방법 (0) | 2023.04.26 |
제품 번들 크기를 줄이는 방법은 무엇입니까? (0) | 2023.04.26 |