2013-03-06 2 views
1

방금 ​​분기 'branch1'과 'branch2'두 개를 병합했습니다. 문제는 현재 많은 충돌이있는 엉망이며 때로는 중복 된 내용이있는 것입니다 (가능합니까 ??).파일을 파일별로 병합하기 - git

내가하고 싶은 것은 'branch1'의 일부 파일을 'branch2'와 병합하고 'branch2'의 일부 파일을 'branch1'과 병합하도록 강제하는 것입니다. 이제 ' branch1 '. 가능한가?

업데이트 : git-merge에 문제가있는 것 같습니다. 참조, 두 번 나타납니다 다음

echo $this->fetch('prehome.html'); 
     die; 

, 나는 BRANCH1 버전을 유지한다고 가정

protected function prehomepage() 
    { 
     $var = 'myvar'; 

     echo $this->fetch('prehome.html'); 
     die; 
    } 

<<<<<<< HEAD 
    $this->mySmarty->assign('title', 'Primagora'); 

    echo $this->fetch('prehome.html'); 
    die; 
    } 

    /** 
    * Generate the campaign block for the general sidebar, called through AJAX. 
    */ 
    protected function getCampaignBlock() 
    { 
    $from = Utils::fromGet('from'); 
    echo $this->getCampaignSidebarBlock($from); 
    die(); 
    } 
======= 
    /** 
    * Generate the campaign block for the general sidebar, called through AJAX. 
    */ 
    protected function getCampaignBlock() 
    { 
     $from = Utils::fromGet('from'); 
     echo $this->getCampaignSidebarBlock($from); 
     die(); 
    } 
>>>>>>> branch2 
+0

항상 병합을 강제로 처리하는 대신 충돌을 해결하는 것을 선호합니다. 비록 당신이 확인할 수 있습니다 [자식 - 병합 - 파일] (http://git-scm.com/docs/git-merge-file) – Rikesh

+0

문제는 자식이 실수를하는 것 같습니다 : 예를 들어 나는 둘 다 브랜치와 병합 한 후 하나의 브랜치에 나타납니다. >>> branch2 – Newben

+0

git은 코드를 제거하지 않고 그 브랜치를 제거하고 브랜치를 커밋합니다. 다른 지점에서도 마찬가지다. – Rikesh

답변

1

(git config merge.conflictstyle diff3가 설정되어있는 경우), 당신은 할 수 있습니다

  • 가 병합을 무시하고 (branch1에서) 원래 버전을 유지 :
 
git show :2:full_path > file 
# or 
git checkout-index --stage=2 -- file 
  • 는 병합을 무시하고 (branch2에서) 다른 버전을 유지 :
 
git show :3:full_path > file 
# or 
git checkout-index --stage=3 -- file 
거기에서

, git addgit commit을.

0

당신은 항상 충돌을 해결하기 위해 시도해야합니다. 그들은 무슨 일이 일어나고 있는지 많이 알려줍니다.

Netbeans는 git와 함께 작동 할 수 있으므로 충돌을 쉽게 해결할 수 있습니다. 유지하려는 버전을 하나 하나 선택하여 충돌을 해결할 수 있습니다.

중복 콘텐츠 란 무엇입니까? 두 파일에서 동일하면 변경된 것으로 표시 할 수 없습니다.

+0

@CharlesBailey : 내 게시물을 편집 한 것으로 보입니다. 병합 할 때 git에 문제가 있습니까? – Newben

0

보여주는 파일은 진행중인 git merge whit 충돌의 중간 파일입니다.

======= 

<<<<<<< HEAD 

에서 라인은 하나 개의 버전

>>>>>branch1 

다른이다

======== 

에서이다. 그런 다음 파일을 손으로 편집하고 사용할 버전을 선택하거나 충돌을 해결하는 데 도움이되는 도구를 실행할 수 있습니다. 망할 놈의 명령 mergetool은 대부분 좋아하는 충돌 해결 프로그램을 사용하도록 구성 할 수있는 모든 갈등을 https://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html

git mergetool 

자식 mergetool를 해결하는 과정에 여러분을 안내 할 것입니다. 나는 meld가 매우 유용하고 직관적이라고 발견했습니다.

Git mergetool with Meld on Windows 또는 충돌과 병합에 How to set Meld as git mergetool