繁体   English   中英

使用git将“导入”从一个分支更改为一个重新创建的分支

[英]“Importing” changes from a branch to a rebased branch with git

我一直在研究项目foo ,它是另一个项目栏的分支,进行分支等。 我现在也想对原始项目进行更改。

首先,我为将来的基础设置了一些东西:

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

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

或者..如果要单次提交,则可以使用cherry-pick git命令;或者..如果要一次导入许多提交,则可以使用带有--onto rebase开关。

因此,由于您已经使用上游(原始)存储库对fork进行了基础调整,因此所有设置都可以进行快速合并-这就是一个很好的开始。

要推送到其他存储库,只需在push命令中指定给定的存储库即可。 要推到foo您将运行...

git push foo <branch-name>

要穿梭于bar回购,请运行...

git push bar <branch-name>

从foo或bar进行拉取,其命令集相同,但使用pull而不是push。

理解这很有用,因为git已经将foo和bar视为单独的远程对象,因此您无需为每个存储库都创建一个特殊的分支。 Git已在后台为您完成此操作。 使用相同的<branch>运行以下命令集,以了解我的意思

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

当您运行git pull命令时,这就是git fetch <remote>git merge <branch>的快捷方式。 当您运行fetch命令时,git会创建/更新本地存储库中所有分支存储库-所有<remote-name>/<branch-name命名约定。 这些不是您可以直接检出的分支,但是您可以针对它们运行日志,从它们合并并根据它们重新设置基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM