使用git v1.7.1我試圖同時對--preserve-merges
和--onto
功能進行重新綁定。最終結果似乎沒有合併提交,因此看起來是線性的。我寧願保留合併提交,原因與人們經常使用--preserve-merges
(更容易看到邏輯上是一個單獨功能並在其自己的分支中開發的提交組)相同。git rebase「--preserve-merges --onto」不保留合併
我的主分支(目標爲底墊)很無聊:
A-B-C
的特性分支我想從拿有已被合併到其子特性分支。像:
X - Y
/ \
V-W ------ Z
其中Z是一個合併提交是特性分支的負責人,從拿地,X和Y分別在子特性分支。
我使用:git rebase --preserve-merges --onto C V Z
我想直到結束:
X - Y
/ \
A-B-C-W ------ Z
但不是我越來越:
A-B-C-W-X-Y
,由於Z是一個受衝突自由合併,代碼的最終狀態是正確的,但歷史並不像我想的那樣富有表現力。
有沒有辦法得到我想要的東西?
編輯地址@Bombe: 我寫了一個bash腳本來構造我的例子。在我的系統上(使用git 1.7.1的RHEL 6.2),這證明了我的問題。
#! /bin/bash
# start a new empty repo
git init
# make some commits on the master branch
git checkout master
touch A.txt; git add A.txt; git commit -m "add A.txt"; git tag Atag
touch B.txt; git add B.txt; git commit -m "add B.txt"; git tag Btag
touch C.txt; git add C.txt; git commit -m "add C.txt"; git tag Ctag
# now build the feature branch
# start at Btag (more or less arbitrary; point is it's before C)
git checkout Btag
git checkout -b feature
touch V.txt; git add V.txt; git commit -m "add V.txt"; git tag Vtag
touch W.txt; git add W.txt; git commit -m "add W.txt"; git tag Wtag
# now a subfeature
git checkout -b subfeature
touch X.txt; git add X.txt; git commit -m "add X.txt"; git tag Xtag
touch Y.txt; git add Y.txt; git commit -m "add Y.txt"; git tag Ytag
# merge the subfeature into the feature
# preserves branch history with --no-ff
git checkout feature
git merge --no-ff subfeature
# the merge commit is our Z
git tag Ztag
# one more commit so that merge isn't the tip (for better illustration of Z missing later)
touch postZ.txt; git add postZ.txt; git commit -m "add postZ.txt"; git tag postZtag
# now do the rebase
git rebase --preserve-merges --onto Ctag Vtag
# optionally move the master branch forward to the top of feature branch
git checkout master
git merge feature
底墊之前,我:
X-Y
/ \
V-W-----Z-postZ
/
A-B-C
底墊後,我得到:
X-Y
/ \
V-W-----Z-postZ
/
A-B-C-W'-X'-Y'-postZ'
注意缺少的Z和postZ」 'Y' 之間。
我編輯了原始帖子,提供重現我的問題的步驟。我相信你是對的,但我不明白我做錯了什麼。 – RaveTheTadpole 2012-03-01 23:03:50
我確實有一個大於1.7.5.2的版本。 :) – Bombe 2012-03-02 06:11:38