合并分支后,发现合并错了分支。
master上还没有提交任何东西,想取消这次合并,让分支回到位,肿么办?
好在现在还没commit另外的内容,如果不小心commit了,那又该怎么办啊?
黄舟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 프로젝트 파일이나 폴더를 마우스 오른쪽 버튼으로 클릭하면 다음이 있습니다.
지역 역사 -> 쇼 역사
클릭하면 모든 로컬 변경 사항을 볼 수 있는 창이 나타납니다. 올바른 것을 찾아 왼쪽 상단에 있는 것을 누르세요:
되돌리기
작은 보라색 곡선 화살표인버튼은 뒤로 이동합니다. 파일 크기가 크지 않을 때 매우 유용하며 적극 권장됩니다.
伊谢尔伦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
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에서 돌아옵니다.
伊谢尔伦2017-04-21 11:18:49
병합 중에 충돌이 발생하여 작업을 취소하고 인덱스를 복원하려면 git merge --abort를 사용하세요
git Reset --hard는 특정 커밋으로 롤백할 수 있습니다
git revert는 커밋을 취소할 수 있으며, 취소하면 새로운 커밋이 생성됩니다
Git rebase는 주의 깊게 연구되지 않았습니다.
巴扎黑2017-04-21 11:18:49
http://opensource.apple.com/source/Git/Git-26/src/git-htmldocs/howto/revert-a-faulty-merge.txt
번역할 시간이 있는 사람은 누구입니까?