찾다

 >  Q&A  >  본문

Git怎样撤销一次分支的合并Merge

合并分支后,发现合并错了分支。
master上还没有提交任何东西,想取消这次合并,让分支回到位,肿么办?

好在现在还没commit另外的内容,如果不小心commit了,那又该怎么办啊?

伊谢尔伦伊谢尔伦2801일 전858

모든 응답(6)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-21 11:18:49

    git은 정말 이상한 관리 도구입니다. 문제에 대한 설명은 너무 많아서 한눈에 어떤 설명이 맞는지 알 수 없습니다.
    http://git-scm.com/blog/2010/03/02/undoing-merges.html 이것이 공식적인 답변입니다. 다 읽고 나면 여기에 번역하겠습니다.

    ====================== 간단한 번역 시작====================

    병합을 취소하는 방법을 묻는 사람이 너무 많기 때문에 Git은 기존 이념 체계 하에서 병합을 취소하는 목표를 달성하는 방법을 보여주기 위해 공식적으로 이 튜토리얼을 발행했습니다.

    방법 1, 병합 전 버전으로 재설정한 후 다음 작업을 다시 실행합니다. 각 공동 작업자는 로컬 HEAD를 롤백하는 방법을 알아야 합니다.

    으아악

    방법 2, 병합 후 다른 작업이나 변경 사항이 있는 경우 git에서는 병합을 취소할 수 있는 방법도 있습니다. git revert를 사용하세요.

    으아악

    이렇게 하면 해당 병합 작업을 상쇄하기 위한 새 커밋이 생성되고 나중에 git merge [해당 번호로 표시되는 브랜치]가 다음 메시지를 표시합니다.

    으아악

    방법 2를 사용하면 git이 이 브랜치에 있는 항목이 우리가 원하지 않는 항목이라고 잘못 생각하게 되기 때문입니다.

    방법 3 , 방법 2 취소 방법:

    으아악

    그렇습니다. 정상적으로 병합이 가능하지만 충돌이 많이 발생할 수 있습니다! !

    으아악

    ======================간단한 번역 끝====================

    결국 여전히 상위권이 너무 귀찮다는 생각이 듭니다. WebStorm을 사용하여 매일 프런트 엔드에서 코드를 작성하는 경우 다음을 살펴보세요. WebStorm 프로젝트 파일이나 폴더를 마우스 오른쪽 버튼으로 클릭하면 다음이 있습니다.

    지역 역사 -> 쇼 역사

    클릭하면 모든 로컬 변경 사항을 볼 수 있는 창이 나타납니다. 올바른 것을 찾아 왼쪽 상단에 있는 것을 누르세요:

    되돌리기

    작은 보라색 곡선 화살표인

    버튼은 뒤로 이동합니다. 파일 크기가 크지 않을 때 매우 유용하며 적극 권장됩니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:18:49

    이 병합의 커밋을 확실히 포기하거나 잘못된 브랜치를 마스터에 병합한 경우 먼저 git reflog 또는 gitg, gitk, qgit 및 기타 도구를 사용하여 병합하기 전에 마스터가 있던 커밋을 확인하고 그런 다음 마스터 브랜치에서 사용하세요. git reset --hard <commit> 헤드 포인터를 재설정하세요. 일반적으로 마스터에서 직접 git reset --hard HEAD~을 실행하면 병합 전 커밋으로 돌아갈 수도 있지만 git reset --hard 명령에는 확인된 커밋을 사용하는 것이 더 좋습니다. git reset --hard 명령은 위험합니다. 현재 제출물을 포기할지 확신하지 않는 한, 계속 진행하기 전에 현재 제출물에 대한 새 분기 참조를 생성하는 것이 가장 좋습니다. 옳은. git branch

    잘못된 병합 후 새 커밋이 있는 경우

    을 사용하여 앞서 언급한 올바른 병합을 완료한 후 올바른 병합 커밋에 새 커밋을 다시 빌드할 수 있습니다. git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支> 명령으로 재구성된 커밋 시퀀스는 선형이 가장 좋습니다. 그렇지 않으면 비선형 커밋이 선형이 됩니다. 비선형 제출 내역을 저장해야 하는 경우 git rebase --onto 매개변수 사용을 고려할 수 있지만 제출의 비선형 정도에 따라 결과를 매우 신뢰할 수 없습니다. --preserve-merges

    회신하다
    0
  • PHPz

    PHPz2017-04-21 11:18:49

    B-R-A-N-C-H
    / --병합
    M-A-S-T-E-R----M

    git Reset --hard R의 해시 값을 사용하여 R로 돌아갈 수 있습니다. R로 병합한 후 M에서 돌아옵니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-21 11:18:49

    여기서 git merge --abort가 필요한 것 같습니다

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:18:49

    병합 중에 충돌이 발생하여 작업을 취소하고 인덱스를 복원하려면 git merge --abort를 사용하세요
    git Reset --hard는 특정 커밋으로 롤백할 수 있습니다
    git revert는 커밋을 취소할 수 있으며, 취소하면 새로운 커밋이 생성됩니다

    Git rebase는 주의 깊게 연구되지 않았습니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-21 11:18:49

    http://opensource.apple.com/source/Git/Git-26/src/git-htmldocs/howto/revert-a-faulty-merge.txt

    번역할 시간이 있는 사람은 누구입니까?

    회신하다
    0
  • 취소회신하다