我一直在开发一个项目 foo ,它是另一个项目 bar 的分支,正在进行分支等等。我现在也想对原始项目进行修改。
首先,我为未来的基础设置了一些东西:
git remote add bar git://bar/bar.git
git fetch bar
git checkout -b bar-master bar/master
现在,对于为项目 foo 创建的给定分支foo-branch,我已经运行了:
git checkout foo-branch
git checkout -b bar-branch
git checkout bar-branch
git rebase bar-master
我可以看到:
git log --format=one
这个篮板没问题了。
现在我要在foo-branch或bar-branch中进行更改/提交。
我的问题是:如何将提交从一个分支(例如foo-branch)“导入”到另一个项目的分支(在给定的例子中,bar-branch)?
答案 0 :(得分:0)
在rebase
之后你可以简单地合并数据,这将是fast-forward merge
所以它不会引入任何合并提交。
或..如果你想要单一提交,你可以使用cherry-pick
git命令
或..如果您希望一次导入多次提交,可以rebase
使用--onto
切换。
答案 1 :(得分:0)
所以,既然你已经使用上游(原始)回购重新设置了你的分支,那么你的所有设置都是为了快速合并 - 这是一个很好的开始。
要推送到不同的仓库,您只需在push命令中指定给定的仓库。要推送到foo
,你会跑...
git push foo <branch-name>
要灌输到bar
回购,请运行...
git push bar <branch-name>
从foo或bar中拉出它的同一组命令,但是使用pull而不是push。
有用的理解是因为git已经将foo和bar视为单独的遥控器,所以你不需要为每个repo创建一个特殊的分支。 Git已经在幕后为你做了这件事。使用相同的<branch>
运行以下命令集以查看我的意思
git log foo/<branch>
git log bar/<branch>
当您运行git pull
命令时,这是git fetch <remote>
和git merge <branch>
的快捷方式。当您运行fetch命令时,git会创建/更新本地存储库上的所有分支存储库 - 所有命名约定为<remote-name>/<branch-name
。这些不是您可以直接签出的分支,但您可以针对它们运行日志,从中进行合并,然后从它们进行重新绑定。