질문 : 아직 푸시되지 않은 Git 병합 실행 취소
내 마스터 브랜치 내에서 git merge some-other-branch
로컬로 수행했지만 변경 사항을 원본 마스터에 푸시하지 않았습니다. 병합하려는 의도가 아니 었으므로 실행 취소하고 싶습니다. git status
수행 할 때 다음 메시지가 표시되었습니다.
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
내가 찾은 지침에 따라 실행을 시도했습니다.
git revert HEAD -m 1
git status
로이 메시지가 표시됩니다.
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
내 브랜치가 커밋 수만큼 앞서는 것을 원하지 않습니다. 그 지점으로 돌아가려면 어떻게해야합니까?
답변
git reflog
사용하면 병합 전에 어떤 커밋이 있는지 확인합니다 ( git reflog
git log
보다 더 나은 옵션입니다). 그런 다음 다음을 사용하여 재설정 할 수 있습니다.
git reset --hard commit_sha
다른 방법도 있습니다.
git reset --hard HEAD~1
1 커밋을 되 찾을 것입니다.
수정되고 커밋되지 않은 / 숨겨지지 않은 파일은 수정되지 않은 상태로 재설정됩니다 . 변경 사항을 숨기거나 아래의 --merge
옵션을 참조하십시오.
@Velmont가 그의 답변에서 아래 제안 했듯이이 직접적인 경우에는 다음을 사용합니다.
git reset --hard ORIG_HEAD
변경 사항을 보존해야하므로 더 나은 결과를 얻을 수 있습니다. ORIG_HEAD
는 병합이 발생하기 직전에 커밋을 가리 키므로 직접 찾을 필요가 없습니다.
추가 팁은 불필요하게 파일을 재설정하지 않으므로 --hard
--merge
스위치를 사용하는 것입니다.
git reset --merge ORIG_HEAD
--merge 색인을 재설정하고 <commit>과 HEAD간에 다른 작업 트리의 파일을 업데이트하지만 색인과 작업 트리간에 다른 파일 (예 : 추가되지 않은 변경 사항이있는 파일)은 유지합니다.
출처 : https://stackoverflow.com/questions/2389361/undo-a-git-merge-that-hasnt-been-pushed-yet
'개발관련 > Git' 카테고리의 다른 글
이전 커밋에서 새 Git 브랜치를 생성하는 방법 (0) | 2022.01.17 |
---|---|
더 이상 원격 저장소에 없는 로컬 git 태그 제거 하는 방법 (0) | 2022.01.17 |
로컬 Git 변경 사항을 제거하는 다양한 방법 (0) | 2022.01.06 |
Git에서 쉘 명령을 실행할 때 사용할 개인 SSH 키를 지정하는 방법 (0) | 2022.01.06 |
Git에서 마스터 브랜치를 완전히 다른 브랜치에서 대체하는 방법 (0) | 2021.12.29 |