&引用;进口;使用git从分支更改为重定基础的分支

&引用;进口;使用git从分支更改为重定基础的分支,git,branch,rebase,Git,Branch,Rebase,我一直在做一个项目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 chec

我一直在做一个项目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分支或bar分支中进行更改/提交


我的问题是:如何将提交从一个分支(例如foo分支)“导入”到另一个项目的分支上(在给定的示例中为bar分支)?

重新设置基础之后,您可以简单地合并数据,这将是
快进合并
,因此不会引入任何合并提交

或者。。如果想要单次提交,可以使用
cherry-pick
git命令
或如果您希望一次导入多个提交,您可以使用
rebase
--ON
开关。

因此,既然您已经使用上游(原始)回购重新设置了fork的基础,那么您的所有设置都将用于快进合并-这是一个很好的开始

要推送到不同的回购,只需在push命令中指定给定的回购即可。要推送到
foo
,您需要运行

git push foo <branch-name>
要从foo或bar中拖动,其命令集相同,但使用pull而不是push

理解这一点很有用,因为git已经将foo和bar视为单独的远程对象,所以不需要为每个回购创建特殊的分支。Git已经在幕后为你做了这些。使用相同的
运行以下命令集,以了解我的意思

git log foo/<branch>
git log bar/<branch>
git日志foo/
git日志条/

运行
git pull
命令时,这是
git fetch
git merge
的快捷方式。当您运行fetch命令时,git会创建/更新本地存储库上的所有分支存储库-所有
/Late reply的命名约定,但是,是的,就是这样。由于git的版本不太旧,您甚至可以只使用分支名称进行cherry pick。我不知道该功能-谢谢(:请注意cherry picking commit将更改其SHA(Mr.Oceptive note)
git log foo/<branch>
git log bar/<branch>