2016-07-19 3 views
0

누구든지 git merge 문제를 피할 수 있습니까? 내 지점을 병합하려고하는데 다른 지점에 my_branch가 another_branch라고 말하게 할 수 있습니다. another_branch는 기본 분기입니다. 따라서 my_branch에서 완료된 작업을 추가하려면 먼저 my_branch를 병합합니다. 이렇게하려면이 단계를 수행하고 있습니다. another_branch에서git merge가 변경 사항을 덮어 씁니다.

git checkout another_branch
git pull anothr_branch

I가 업데이트되면 최신 변경 사항 나는

git checkout my_branch
git merge anothr_branch

을 my_branch로 전환하기 전에 모든 예 나는 커밋과 나의 변화를 준비하고있다 로컬로 저장하십시오. 그래서 내 변경 사항을 잃을 의심의 여지가 없습니다.

하지만 another_branch의 모든 변경 사항이 표시되지 않습니다. 그래서 덮어 쓰겠습니다.

어떤 이유가있을 수 있습니까?

+0

부정적 마킹을 해줘서 고맙지 만 그 이유를 설명해 주시겠습니까 – deep

+0

설명에서 실제로 발생한 문제를 이해하기가 어렵습니다. 덮어 쓰기 된 변경 사항의 예를 제공 할 수 있다면 더 유용한 응답을 얻을 수 있습니다. 일반적으로 자식은 병합 중에 아무것도 덮어 쓰지 않습니다. – max630

+0

확인. 하지만 당신이 나에게 대답 할 수 있다면 매우 흥미로운 모호한 진술이라고 말하면, 그것은 똑같은 상황에 빠지지 않도록 도와 줄 것입니다. 당신은 ** 보통 ** 자식은 ** 병합 중에 ** 아무것도 덮어 쓰지 않는다고 말했습니다. 그래서 자식이 덮어 쓰지 만 다른 작업에서는 병합되지 않는다는 것을 의미합니까? – deep

답변

1

아마도 원하는 것은 rebase입니다. rebase는 소스 브랜치에서 커밋 된 후 대상 브랜치에 커밋을 배치합니다.

내 로컬 지사에있는 경우 로컬로 git rebase master을 사용합니다. 이는 가장 최근 커밋 상단에있는 지형지 물에있는 커밋을 master에 커밋합니다.

원격 지점의 경우 일반적으로 변경 내용을 숨기고 서버의 변경 사항을 가져 와서 서버의 최신 변경 사항에 변경 내용을 적용하는 git pull --rebase을 사용합니다.

rebase가 작동하는 방법에 대한 최고의 시각적 가이드는 this one by Atlassian입니다.

당신은 이러한 리소스에 더 약 rebase을 찾을 수 있습니다

+0

Rebase는 내가 잘못하지 않았다면 그 브랜치의 맨 위에 커밋한다.하지만 git pull에 대해서 언급했듯이 --rebase는 내 작업을 숨긴다. 쓸모있다. 고맙다 – deep

+0

'pull --rebase'는 Git 2.6에서만 변경된 것을 숨길 것이다. 'git pull.rebase true'와 함께 사용되는'git config rebase.autostash true'와 함께 : http://stackoverflow.com/a/30209750/6309 – VonC

+0

행운을 빌어 요 나는 재 파일을 시도했지만 여전히 파일 덮어 쓰기와 같은 상황입니다 , 다른 플랫폼에서는 동일한 작업을하지만 제대로 병합합니다. 무엇이 잘못 됐는지 모릅니다. 나는 원격 저장소가 덮어 쓰기가 두려워서 이것으로 끌어 오기 요청을 사용하고 싶지 않습니다. – deep

0

힘내 덮어 쓰지 않습니다 해결로 (비록 그들이 정말로 그렇지 않다면).

힘내는 병합으로 현명하지 않으려 고합니다. 병합 할 때 깔끔하게 병합 할 수 있다면 그렇게 할 것입니다. 그렇지 않으면 병합 프로세스를 중지하고 수동으로 해결해야하는 충돌을 표시합니다. 파일 충돌을 해결 한 후에는 파일 git add <file>... (파일 추적에 사용하는 것과 동일한 명령)을 사용하여 해결 된 것으로 표시해야합니다.

힘내과 같이 충돌을 표시 :

<<<<<<< HEAD:index.html 
< div id="footer" > contact : [email protected]</div> 
======= 
<div id="footer" > 
please contact us at [email protected]</div> 
>>>>>>> anotherBranch:index.html 

상부 (==== 전에 일부) 파일 index.html 파일 HEAD에 있습니다. 아래 부분은 동일한 파일의 anotherBranch이라는 지점의 것입니다.

아마도 자습서에서 this part을 읽고 싶습니다.

0

다음은 일상적인 작업으로 여러 개발자, 여러 팀으로 구성된 환경에서 충분히 간단하고 잘 작동합니다.

제품의 현재 개발중인 버전을 저장하는 dev 브랜치가 있다고 가정 해보십시오. A 브랜치는 현재 생산 버전을 저장합니다. 모든 개발자는 구현중인 기능이나 버그 수정을 위해 자체 지점을 가지고 있습니다.

매일 아침 모든 개발자는 다음을 수행합니다.
체크 아웃 dev.
풀다운
체크 아웃 개발자의 영업점.
dev

하루 내내, 위의 과정이 반복 될 수 있습니다. 개발자는 dev 브랜치의 관리자로 지정된 다른 개발자에게 병합 요청을합니다.

개발자 :
커밋 변경.
푸시

데브 메인테이너 :
체크 아웃 개발자로부터 분기을 병합합니다.
풀다운
Checout dev.
Merge from 개발자에서 병합.
푸시

관련 문제