2011-09-09 5 views
0

git의 원격 분기로 작업하고 있습니다. 어떤 일을하기 전에, 나는 ToT를 얻기 위해 git pull을한다. git 로그를 살펴보면 다음과 같이 메시지와 함께 병합 커밋이 자동으로 만들어지는 것을 볼 수 있습니다. "ssh : // myserver : 1111/mybranch"의 'master'분기를 병합합니다. 그런 다음, 나는 내 일을하고 내 변화를 저지른다. 그 후 나는 나의 변화를 밀어 낸다. Google 시스템은 코드 검토를 위해 gerrit로 설정됩니다. 새 변경 사항은 병합 커밋에 대한 종속성으로 gerrit에 표시됩니다. 이걸 어떻게 없앨까요?git 원격 병합 gerrit에서 잘못된 종속성이 발생합니다.

답변

1

당신의 지점이 당기기 전에 원격 지점과 차이가 있기 때문에 병합이 빨리 감기되지 않았을 가능성이 있습니다. 그래서, 당신이 당신의 변화를 밀었을 때, 그것은 아마 gerrit에서 수정을 위해 하나 이상의 chnage를 만들었을 것입니다, 그렇죠?

gerrit를 사용하는 가장 좋은 방법은 변경을 커밋하고 변경하기 전에 원격 브랜치를 깨끗하게 체크 아웃하는 것입니다.이 경우 변경 사항에 종속되지 않습니다. 필자는 보통 각 새로운 기능이나 수정에 대한 새로운 지점을 체크 아웃하고 확인하고 gerrit의 마스터 저장소에 병합 할 때까지 유지하고 유지해야합니다 (개정 결과로 무언가를 변경하고 새로운 패치 세트를 작성해야 할 경우를 대비하여) 같은 변화에 대해).

그러나 동시에 여러 커밋을 푸시하고 마지막 커밋이 이전 커밋을 다시 실행하는 경우 종속성이 유용합니다. 예를 들어 클린 분기에 커밋을 두 개 추가하면 해당 커밋이 두 개로 표시됩니다 최근과 이전 사이의 의존성에 따라 변경되며 최신 버전은 종속성 이전에 마스터 리포지토리에 병합되지 않습니다.

1

git pull 로컬 분기가 원격 추적 인 경우 실제로는 git fetchgit merge입니다. 따라서 원격 브랜치가 빨리 감기 가능하지 않으면 git pull은 병합 커밋을 생성합니다. 병합을 방지하기 위해

'git fetch' 
'git rebase -p' 
'git pull --rebase' 

을 사용하거나 자식 설정의 값 only으로 merge.ff를 설정 커밋합니다.

또는

로컬 지점에서 원격 추적 설정을 해제 git config --unset branch.<branch>.merge

관련 문제