0

我一直在做一个项目foo,它是另一个项目bar的分支,做分支等等。我现在也想提供我对原始项目的更改。

首先,我为未来的 rebase 设置了一些东西:

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)?

4

2 回答 2

0

rebase您可以简单地合并数据之后,这将fast-forward merge不会引入任何合并提交。

或者..如果你想要单个提交,你可以使用cherry-pickgit 命令或者..如果你想要一次导入多个提交,你可以使用rebaseswitch --onto

于 2013-04-04T17:30:51.783 回答
0

因此,由于您已经使用上游(原始)repo 重新设置了 fork 的基础,因此您已经为快速合并做好了准备——这是一个很好的开始。

要推送到不同的仓库,您只需在推送命令中指定给定的仓库。推给foo你会跑...

git push foo <branch-name>

要赶上bar回购,请运行...

git push bar <branch-name>

要从 foo 或 bar 中拉取,它的命令集相同,但使用拉取而不是推入。

理解这一点很有用,因为 git 已经将 foo 和 bar 视为单独的遥控器,因此您不需要为每个 repo 创建一个特殊的分支。Git 已经在幕后为您完成了这项工作。使用相同的命令运行以下命令集<branch>以了解我的意思

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

当您运行命令时,这是andgit pull的快捷方式。当您运行 fetch 命令时,git 会创建/更新本地存储库上的所有分支存储库 - 所有命名约定为. 这些不是您可以直接签出的分支,但您可以对它们运行日志,从它们合并和变基。git fetch <remote>git merge <branch><remote-name>/<branch-name

于 2013-04-04T18:44:52.767 回答