2016-06-01 5 views
7

git rebase 후에 내가 해결할 충돌을 병합했습니다. 나는 A.java에 "우리에 의해 덧붙여졌다"의 의미에 혼란 스럽다. C.java과 같은 새 파일로 자동 추가/상영되지 않도록하려면 어떻게해야합니까?"우리에 의해 추가 된"git은 무엇을 의미합니까?

Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     new file: com/company/C.java 

Unmerged paths: 
    (use "git reset HEAD <file>..." to unstage) 
    (use "git add <file>..." to mark resolution) 

     added by us:  com/company/A.java 
     both modified: com/company/B.java 

자식 버전 2.5.1.windows.1

+0

rebase가 반복적 인 cherry-pick으로 작동한다는 것을 알고있는 것처럼 들리 겠지만,이 체리 - 선택 작업은 rebase의'--onto' 타겟에서 익명의 브랜치를 확장하면서 수행됩니다. 따라서 "우리가 추가했습니다"는 "병합 기반과 비교하여 현재 분리 된 HEAD 커밋에 있음"을 의미합니다. 이것이 커밋을 위해 자동으로 준비되지 않는다는 것이 이상하거나/잘못되었습니다. – torek

+0

수수께끼를 해결할 수 있습니까? –

답변

0

"자식 REBASE은"투박하고 둔한하지만 오 그렇게 유용합니다. 귀하의 경우에 내가 생각하는 것을 요약하면, rebase "merge conflict"는 "both modified"에 의해 생성됩니다. 브랜치의 "co.kr/company/B.java"모드, 브랜치의 모드 또는 두 가지 콤보 중 원하는 모드를 선택해야합니다. "by by us :"는 "com/company/A.java"가 브랜치에 새롭고 리베이스하는 브랜치에 의해 도입되었다고 알려줍니다. 그러나 git이 rebase를 구현하는 방식 때문에 "우리"는 실제로 그들의 지점입니다. 브랜치, rebase의 타겟에서 "com/company/A.java"를 삭제하지 않는 한 리베이스 "병합 충돌"로 간주되는지 확실치 않습니다. 이 경우, 그것은 당신이 해결해야 할 rebase "병합 충돌"이 될 것입니다. 이러한 "병합 충돌"을 해결하려면 "우리"가 실제로 자신의 지점이고 "자신의"지점이 실제로 지점임을 기억하십시오. 어쩌구.

+0

이 점을 언급해야합니다. 때로는 "git rebase"가 체리 피클을 엉망으로 만들 때'git rebase --skip'을해서 건너 뛰면됩니다. – BoiseBaked