개발관련/Git

아직 푸시되지 않은 Git 병합 실행 취소 하는 방법

Rateye 2022. 1. 17. 11:55
728x90
반응형
질문 : 아직 푸시되지 않은 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
728x90
반응형