2017-03-02 11 views
4

최근에 나는 <<<<< HEAD과 같은 Git rebase 메시지를 포함하는 코드를 저지르는 어리석은 실수를 저질렀습니다.힘내 커밋이나 리베이스에 "<<<<< HEAD"와 같은 내용이 포함되어있는 경우 자동 검색하는 방법은 무엇입니까?

파일에 해당 메시지가 포함되어 있는지 다시 확인하지 않고 내가 git add . ; git rebase --continue이되어서 문제가 발생했다고 생각합니다.

나는 이것을 방지하기 위해 어쨌든 알고 싶습니다. 내 말은, Git이 병합 할 때 보통 이런 메시지가 있다는 것을 경고합니다. 그러나 당신 후에 git add . 나는 힘내가 그걸 내 코드의 일부로 취급한다고 믿는가?

오버 커밋 (bridage/overcommit) 이라는 유명한 도구를 확인했지만 그런 검사가없는 것 같습니다.

편집 : 오버 커밋에서, 단지 내 매뉴얼은 git commit에 의해 커밋 확인이 PreCommit/MergeConflicts 후크,있다,하지만이 REBASE 동안 발생하는 경우, 그것은 실행되지 않습니다.

희망을 찾을 수있는 실제 방법을 찾을 수 있습니다.

+0

난 그냥 간단히 오버 커밋에 대한 설명서에보고하고, [MergeConflicts]보고하는 데 도움이 /merge_conflicts.rb) pre-commit hook. 그게 네가 원하는 걸하지 않니? – Hasturkun

+0

예, 실제로 사용하도록 설정했습니다. 하지만 rebase/merge 작업에서 발생하므로 미리 커밋 된 후크가 트리거되지 않습니다. (적어도 경고는 없습니다.) –

답변

2

충돌이 발생하면 <<<<< HEAD 표시가 파일에 추가됩니다. 당신이 태그를 표시 일부 충돌하는 변경을 발견 지점과 자식을 리베이스하는 그래서

망할 놈의 강타가 REBASE를 일시 중지하고 정확한 수를 커밋 보여줌으로써 표시를 제공하는 충돌이있을 때마다
<<<<<<< HEAD 
conflicting changes in HEAD 
============ 
conflicting changes in current commit 
>>>>>>> commit SHA1 

. 수동으로 또는 kdiff3과 같은 mergetool을 통해 충돌을 해결할 수 있습니다. 그런 다음 git rebase --continue을 수행하여 리베이스를 계속할 수 있습니다.

의이 예

enter image description here

위의 예는

  • 자식이 원하는하기로 도움을 제공하는 마스터에 BRANCH1을 리베이스하면서

    1. 자식 강타가 충돌을 감지 다음과 같은 점을 가지고 살펴 보자 다음 단계가 될 수 있습니다
    2. git는 리베이스를 일시 중지하고 리베이스가 일시 중지 된 지점을 보여줍니다.

    파일에 충돌 태그가 있음을 분명히 나타냅니다. 여기

    이에서 파일이

    enter image description here

    그래서 해결하기 위해 git rebase --continue를 제거하거나 줄을 추가, 파일을 저장, 자식이 추가하고 입력 표시된 태그를 찾을 파일을 갈 필요가

    포인트입니다 .

    우연히 <<<<<<< HEAD 아이콘을두고 리베이스를 계속했을 수 있습니다.

    이 문제를 방지하려면 kdiff3과 같은 병합 도구를 사용하는 것이 가장 좋습니다. 이 충돌하고 간단하게 원하는 부분을 선택하여 충돌을 해결 할 때마다 설치 및 kdiff3을 구성한 후 여기 http://jebaird.com/2013/07/08/setting-up-kdiff3-as-the-default-merge-tool-for-git-on-windows.html

    단계를 찾을 수 있습니다, 당신은 단지의 kdiff3을 열 bash는 유형 git mergetool이 필요합니다. kdiff3는 또한 버튼 클릭만으로 충돌하는 라인으로 이동할 수있는 기능을 제공합니다.

    희망이 https://github.com/brigade/overcommit/blob/master/lib/overcommit/hook/pre_commit (

  • +0

    This 정말 대단한데, 수년간 파일을 수동으로 편집하여 모든 충돌을 해결합니다. 모든 mergetools를 검색하여 vimdiff + fugitive.vim이 매우 유용하다는 것을 알았습니다. 도와 주셔서 감사합니다! –

    0

    사전 커밋 후크를 보셨습니까? 예를 들어 this 링크를 참조하십시오. 테스트 nocommit이있는 파일을 커밋하지 못하도록 설정하는 방법 예

    +0

    예 미리 커밋 된 후크를 보았지만'git rebase '중에 감지하고 있습니다. –