2015-01-20 9 views
-1

나는 master 변경을 추진하는 두 가지, mastermy-work-branch왜 내가 다른 REBASE를 수행 할 때 다시는 내 변화를 해결해야 할

다른 사람들이, 그래서 나는 my-work-branch 그렇게 master와 동기화도 나는 것을 계속해야 다른 사람들의를 나는 다음과 같은 명령

git rebase origin/master 

나는 자주 master 지점에 대해 my-work-branch에서 리베이스하려고

변경됩니다 얻을 이틀 전에 그것을했다, 그래서 my-work-branch의 자식 로그는 다음과 같이이다 : 다시 같은 REBASE 명령을 실행

merge change from master 
my change a 
my change b 
my change c 
... 
latest change from master two days ago 

오늘 (이틀 동안, 나는 모든 것을 할, my-work-branch에 변경 사항이 없습니다

그러나, 나는 자식이, (나는 git log에서 볼 수 있습니다)를 두 번 내 변경 (a, b, c ...)를 적용 발견하고 또한 갈등의 원인) master에서 새로운 변화를 좀하려고, 그래서 충돌을 해결해야합니다.

왜 이런 일이 일어날 지 알고 있습니까? my-work-branchmaster 분기와 동기화하는 잘못된 방법이 git rebase입니까?

+0

나는 git rebase 대신에 git pull을 원한다고 생각한다. – Jonathan

+0

@Jonathan, git pull은 나의 원격 브랜치에서 끌어 올 것이고, 내가 원점을 마스터로부터 가져 오도록 지정한다는 의미인가? – jojo

+0

http://stackoverflow.com/questions/20101994/git-pull-from-master-into-the-development-branch – Jonathan

답변

0

Git rebase는 지점을 동기화 상태로 유지하는 데 완벽하게 맞습니다. 실제로 일부 사람들 (나 같은)은 더 직선적 인 역사를 유지하는 방법으로 푸시/병합 기법보다 선호합니다. 하지만이 명령에 익숙해 져야합니다.

나는 origin/master을 다른 사람의 변경 사항과 동기화시키기 위해 정기적으로 git fetch을한다고 가정합니다.

그런 경우에 반복적 인 리베이스가 발생하면 충돌이 일어나는 것은 정상입니다. 업스트림 (origin/master)이 새롭게 변경되었을 수 있기 때문입니다.

불완전한 rebase 때문에 왜 동일한 커밋이 두 번 보입니까?

은 무슨 일이 일어나고 있는지 확인하기 위해, 당신은 git rebase abort 당신이 REBASE를 시작하기 전에 상태를 복원하고, git rebase -i origin/master을 할 수있다 -는 커밋이 origin/master의 상단에 넣어 될 포착을 보여 것입니다. 예상보다 많은 것이 있으면 지점 상태에 문제가있는 것입니다.

git log <my branch> --not origin/mastergit log origin/master --not <my branch>의 조합을 사용하여 업스트림에는 있지만 지점에는없는 커밋을 쉽게 볼 수 있으며 그 반대의 경우도 마찬가지입니다.