2013-04-04 69 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。这些不是可以直接签出的分支,但是您可以针对它们运行日志,从中合并和从中重新分配。