2013-04-04 24 views
0

我一直在做一個項目foo這是另一個項目的分支,做分支等等。我現在想要對原始項目進行更改。使用git從分支「導入」更改到重新設計的分支

首先我已經建立了東西以後變基:現在

git remote add bar git://bar/bar.git 
git fetch bar 
git checkout -b bar-master bar/master 

,爲項目做一個給定的分支foo的分支,我已經跑:

git checkout foo-branch 
git checkout -b bar-branch 
git checkout bar-branch 
git rebase bar-master 

我可以看到:

git log --format=one 

表示rebase變好了。

現在我要在foo-branch或bar-branch中進行更改/提交。我如何從一個分支(例如foo-branch)將提交「導入」到另一個項目的分支(在給定示例中爲分支)?

回答

0

rebase之後你可以簡單地合併數據,這將是fast-forward merge所以它不會引入任何合併提交。

或..如果你想單一提交,你可以,如果你想多提交一次,你可以使用rebase--onto開關被進口使用cherry-pick混帳命令 或..。

+0

最新回覆,但是,這就是它。由於git版本不太舊,你甚至可以簡單地使用分支名稱進行挑選。 – Christophe 2013-09-21 09:39:23

+0

我沒有意識到這個功能 - 謝謝(請注意,cherry-picking commit會改變它的SHA(Mr. Obvious note) – 2013-09-25 05:49:39

0

所以,既然你已經用上游(原始)回購重塑了你的分叉,你的所有設置爲快速合併 - 這是一個很好的開始。

要推送到不同的倉庫,只需在您的push命令中指定給定的倉庫。要推到foo你會跑......

git push foo <branch-name> 

布什到bar回購,運行...

git push bar <branch-name> 

從富或酒吧,它的相同命令集拉,但用拉而不是推。

它有用的理解,因爲git已經將foo和bar作爲單獨的遙控器對待,您不需要爲每個回購製作一個特殊的分支。 Git已經在幕後爲你做了這個。與同<branch>運行以下命令集明白我的意思

git log foo/<branch> 
git log bar/<branch> 

當你運行一個git pull命令,多數民衆贊成git fetch <remote>git merge <branch>一條捷徑。當你運行一個提取命令時,git會創建/更新你本地存儲庫上的所有分支庫 - 所有的命名約定爲<remote-name>/<branch-name。這些不是可以直接簽出的分支,但是您可以針對它們運行日誌,從中合併和從中重新分配。