IT

Git 병합 롤백

lottoking 2020. 6. 4. 08:06
반응형

Git 병합 롤백


develop branch
--> dashboard (working branch)

git merge --no-ff develop업스트림 변경 사항을 대시 보드에 병합하는 데 사용 합니다

자식 로그 :

commit 88113a64a21bf8a51409ee2a1321442fd08db705
Merge: 981bc20 888a557
Author: XXXX <>
Date:   Mon Jul 30 08:16:46 2012 -0500

    Merge branch 'develop' into dashboard

commit 888a5572428a372f15a52106b8d74ff910493f01
Author: root <root@magneto.giveforward.com>
Date:   Sun Jul 29 10:49:21 2012 -0500

    fixed end date edit display to have leading 0

commit 167ad941726c876349bfa445873bdcd475eb8cd8
Author: XXXX <>
Date:   Sun Jul 29 09:13:24 2012 -0500

병합에는 약 50 개 이상의 커밋이 있었고 대시 보드가 상태 프리 병합으로 돌아가도록 병합을 되 돌리는 방법이 궁금합니다.

이것의 두 번째 부분은와 병합 --no-ff하지 않으면 ' 병합 지점'개발 '을 대시 보드에 병합' 커밋을 얻지 못한다는 것입니다. 어떻게 병합을 롤백합니까?


병합 커밋 되돌리기는 다른 질문 에서 철저히 다루었습니다 . 두 번째로 설명하는 빨리 감기 병합 git reset을 수행하면 이전 상태로 돌아갈 수 있습니다 .

git reset --hard <commit_before_merge>

<commit_before_merge>with git reflog, git log또는 moxy를 느끼고 있고 다른 작업을 수행하지 않은 경우 with 를 찾을 수 있습니다 .git reset --hard HEAD@{1}


여기에서:

http://www.christianengvall.se/undo-pushed-merge-git/

git revert -m 1 <merge commit hash>

힘내 되돌리기는 지정된 커밋을 롤백하는 새로운 커밋을 추가합니다.

-m 1을 사용하면 이것이 병합임을 알리고 마스터 브랜치의 상위 커밋으로 롤백하려고합니다. -m 2를 사용하여 개발 분기를 지정합니다.


로 병합 커밋을 재설정하십시오 git reset --hard HEAD^.

--no-ff를 사용하면 사이에 아무것도 커밋하지 않더라도 항상 병합이 생성됩니다. --no-ff git이 없으면 빨리 감기를 수행하므로 분기 HEAD가 병합 된 분기의 HEAD로 설정됩니다. 이를 해결하려면 되돌릴 commit-id를 찾으십시오 git reset --hard $COMMITID.


git reset -m 1 88113a64a21bf8a51409ee2a1321442fd08db705

git revert -m 1 88113a64a21bf8a51409ee2a1321442fd08db705

그러나 예기치 않은 부작용이있을 수 있습니다. git-scm.com/docs/git-revert의--mainline parent-number 옵션을 참조하십시오

아마도 무자비하지만 효과적인 방법은 해당 커밋의 왼쪽 부모를 확인하고 모든 파일의 복사본을 만들고 HEAD다시 체크 아웃 한 다음 모든 내용을 이전 파일로 바꾸는 것입니다. 그런 다음 git은 롤백되는 것을 알려주고 자신의 되돌리기 커밋을 만듭니다 :)!

참고 URL : https://stackoverflow.com/questions/11722533/rollback-a-git-merge

반응형