git 如何从另一个分支获取更改

hc2pp10m  于 2023-02-28  发布在  Git
关注(0)|答案(6)|浏览(186)

我目前正在featurex分支上工作,我们的主分支命名为our-team,自从我开始在featurex上工作以来,分支our-team做了更多的更改。
我已经在本地完成了这一操作,以获取our-team的所有最新更改:

git checkout our-team
git pull

在推送featurex进行合并之前,我希望在本地将our-team分支中的所有更改获取到featurex中,以便确保一切按预期工作。
我该怎么做呢?

7nbnzgx9

7nbnzgx91#

在遵循这些说明之前,请记住featurex是合并和推送更改的分支
1.转到您的分支featurex

git checkout featurex

1.将our-team分支的变更合并到featurex分支

git merge our-team

git cherry-pick {commit-hash}

如果你想合并特定的提交。
注意:在将our-team分支合并到featurex分支之后,您可能需要在推送之前修复冲突。

e5nszbig

e5nszbig2#

当您在分支featurex上时,可以使用rebase,例如git rebase our-team
它会将分支的起点移动到our-team分支的末尾,合并featurex分支中的所有更改。

tcbh2hod

tcbh2hod3#

git fetch origin our-team

git pull origin our-team

但是首先你应该确定你已经在你想要更新到的分支上了(featurex)。

iezvtpos

iezvtpos4#

有两个选项,要么合并,要么重定分支的基础。两者的工作方式不同,但结果相似。
accepted answer是一个
rebase.这将把所有提交都放到our-team上,然后把所有提交都应用到featurex上,并提示您根据需要合并它们.
需要注意的一点是,你会丢失/重写分支历史,这实际上是告诉git你的分支不是从123 abc开始,而是从456 cde开始。这会给其他处理分支的人带来麻烦,一些远程工具也会抱怨。如果你确信你在做什么,这就是--force标志的作用。
other posters所建议的是一个
merge,它将获取featurex分支,无论它具有什么状态,并尝试将其与our-team的当前状态合并,提示您执行一个big合并提交并在推送到our-team之前修复所有合并错误。不同之处在于,您在之前**应用featurex提交our-team新提交,然后修复差异。您也不重写历史,而是向其添加一个提交,而不是重写之前的提交。
这两个选项都是有效的,并且可以协同工作。通常(我的意思是,如果你使用广泛使用的工具和方法,如git-flow)对一个特性分支所做的是将其合并到主分支中,通常通过一个合并请求,并解决一个(或多个)合并提交中出现的所有冲突。
重定基是一个有趣的选项,它可以帮助你在最终进行合并之前修复分支,并减轻必须进行一次大合并提交的痛苦。

ztigrdn8

ztigrdn85#

你就快到了:)
剩下的就是

git checkout featurex
git merge our-team

这将把我们的团队合并到featurex中。
以上假设您已经提交/隐藏了您在featurex中的更改,如果不是这样的话,您需要先这样做。

rkttyhzu

rkttyhzu6#

如果有人偶然发现这个问题,问自己如何不使用git pull来拉取修改- git pull会先运行git fetch,然后再运行git merge,因为这是fetch + merge两个序列的组合。对于那些只需要从另一个分支拉取修改而不需要这样做的人:

git checkout <branch with changes wanted> 
git checkout -b <new branch>

相关问题