如果我開始一個結構上類似如下我的遙控器:如何在分支合併燙掌握
A-B-C-D-F-G master
\
E-H-I branch
我克隆分支,並改變「J」(&提交和推到遠程分支)我怎樣才能把'J'合併到主人而不用打倒'H'和'I'?只能通過推動'J'來完成,還是需要切換到本地回購跟蹤主數據庫,合併本地'J'更改並將其推送給主數據庫?
A-B-C-D-F-G-J master
\
E-H-I-J branch
如果我開始一個結構上類似如下我的遙控器:如何在分支合併燙掌握
A-B-C-D-F-G master
\
E-H-I branch
我克隆分支,並改變「J」(&提交和推到遠程分支)我怎樣才能把'J'合併到主人而不用打倒'H'和'I'?只能通過推動'J'來完成,還是需要切換到本地回購跟蹤主數據庫,合併本地'J'更改並將其推送給主數據庫?
A-B-C-D-F-G-J master
\
E-H-I-J branch
要製作的歷史,反映現實,所以下游保存自己潛在的麻煩,
git checkout -b Jbranch B
git cherry-pick J
git checkout -B branch I
git merge Jbranch
git checkout -B master G
git merge Jbranch
git branch -d Jbranch
生產
A..B..C..D..F..G..J'' master
| /
|\........J'.+
| \
\....E..H..I..J branch
的「J」承諾的樹在新老「分支」提示會與此次的明確歷史相同。
您可以cherry-pick更改J.櫻桃採摘只複製一個特定的提交到一個分支。
$ git checkout master
$ git cherry-pick J
請注意,提交J現在將被複制(它將存在於每個分支上)。
任何想法爲什麼直接從分支到主人挑選J會導致我後來合併麻煩。合併能夠看到C-D-F-G-J和H-I-J有共同的J並且只合並H&I。大多數其他版本控制系統都這樣做,與Git有什麼不同? – BenG 2013-04-25 07:53:27
這是一個純粹的安全遊戲,就像任何vcs git都可以識別櫻桃挑選一樣,因爲兩個提交應用了看起來相同的補丁,但任何可以檢測到類似情況的系統都可能被愚弄。 – jthill 2013-04-25 09:35:12