나는 여기에 몇 사람과 작업하는 자식 저장소가있다. branch.master.rebase = true
과 branch.master.mergeoptions = --no-ff
을 설정했지만 문제가 생겼습니다.힘내 : 깨끗한 내역 트리를 유지하는 데 문제가있다.
누군가가 지형지 물을 master로 병합하려고했습니다. 합병은 성공적이었고, git은 지점이 origin/master보다 30 커밋이라고 말했다. 그가 변경 사항을 밀어 넣으려고 할 때, git은 원격 위치가 변경되어서 git을해야하기 때문에 밀어 넣기를 거부했습니다. 그가 당김을했을 때, 자식은 마스터로 합병 된 커밋에 대한 rebase를 만들었고, 이제는 마스터보다 29 커밋 만 남았습니다.
내가 병합 때문에 REBASE 후, 잃어버린 커밋 생각, 기능 지점에서 온 새로운 커밋으로 다시 적용 커밋, 그리고 커밋. 내가 '무엇을,
* c4 (head, master, feature_branch, origin/master)
| \
| * c3 (origin/feature_branch)
| * c2
| * c1
|/
*
병합은 빨리 감기 병합처럼 보였다 :
* c3'(head, master, origin/master)
* c2'
* c1'
| * c3 (feature_branch, origin/feature_branch)
| * c2
| * c1
|/
*
내가 달성하기 위해 노력했다 즉 :
는 푸시 후, 나무는 그렇게했다 나는 분열의 역사를 지키려고 노력하고 있습니다.
내가 이것을 피할 수있는 방법에 대한 유용한 정보가 있습니까?
감사합니다,
편집 :이 문서는 내 문제 descibes : http://notes.envato.com/developers/rebasing-merge-commits-in-git/
지금 내가 알고 있어요 git rebase
에 대한 옵션을 --preserve을-병합하지만,이 옵션을 만들 수있는 방법이 태만?
그렇지 않으면 개발자는 git pull
대신 git fetch
및 git rebase origin/master
이되어야합니다. 모든 분기 기록을 저장하려면
다음 링크를 사용해보십시오. http://www.randyfay.com/node/89 가장 도움이되었습니다. –
는 Luckly 여기 devs 명령 .. 자식 푸시 --force''에 대해 알고하지 않습니다하지만 난 당신이 더 설명해 주시겠습니까 수,이 문서가 도움이 될 방법을 모르겠어요? 우리는 모든 작업이 마스터로 병합되기 전에 검토되기 때문에 feature_branches를 원격으로 푸시합니다. 따라서 병합하기 직전에 브랜치를 리베이스 할 수 없습니다. 처음으로 브랜치를 푸시하기 전에 마스터에서 리베이스해야합니다. –
개인적으로 "병합 워크 플로의 대안"에서 언급 한 끌어 오기 요청 전략이 마음에 듭니다. 이 검토 과정에 http://code.google.com/p/gerrit/을 사용할 수 있습니다. 마스터 브랜치와의 병합을 담당하는 한 사람은 제한적이어야하며 병합 할 수없는 경우 풀 요청을 거부해야합니다. –