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


84

我目前在featurex分支机构工作。我们的主分支称为branch our-team。自从我开始工作以来featurex,对分支进行了更多更改our-team。在进行featurex合并之前,我希望在本地将所有更改从our-team分支转换为,featurex以便确保一切都能按预期进行。

我已在本地完成此操作,以获取来自的所有最新更改our-team

git checkout our-team
git pull

我怎样才能做到这一点?


6
您是有意而又准确地问了这个问题。这使得回答起来更容易,对于菜鸟(例如我自己)也更容易理解。
douglas.kirschman

Answers:


45

例如,当您在分支机构上时,可以使用rebasegit rebase our-teamfeaturex

它将分支的起点移动到分支的末尾our-team,合并分支中的所有更改featurex


3
以后我会用到它,但是这次我只是做了以下操作。git checkout our-team git pull git checkout featurex git merge our-team
安东尼

5
我想强调一下:如果您这样做并且没有our-team本地的更改,则需要运行git fetch && git rebase origin/our-team。您的命令假定该存储库已经过更新。
Makoto

97
  1. 转到主分支 our-team

    • git checkout我们的团队
  2. our-team分支中提取所有新更改

    • git pull
  3. 去你的分行 featurex

    • git结帐 featurex
  4. our-team分支的更改合并到featurex分支

    • git合并 our-team
    • git cherry-pick{commit-hash}如果要合并特定的提交
  5. 通过our-team分支的更改来推动您的更改

    • git推

注意:在将our-team分支合并到featurex分支之后,可能需要先解决冲突,然后再推送


git pull会进入哪里?
chia yongkang

26
git fetch origin our-team

要么

git pull origin our-team

但首先,您应确保已在要更新至(featurex)的分支上。


8

你快到了:)

剩下的就是

git checkout featurex
git merge our-team

这会将我们的团队合并到Featurex中。

上面假设您已经在Featurex中提交/保存了更改,如果不是这样,则需要首先执行此操作。


5

对于其他在Google上发表此帖子的人。有2个选项,合并重新分支。两者的工作方式不同,但结果相似。

接受的答案是一个重订。这将完成所有提交our-team ,然后将完成应用到featurex,提示您根据需要合并它们。

更改基础的一点警告是,您丢失/重写了分支历史记录,实际上是告诉git分支不是从commit 123abc开始,而是从456cde开始。这将给在分支上工作的其他人带来问题,并且一些远程工具会对此抱怨。如果您确定自己在做什么,那就是该--force标志的作用。

什么其他的海报所提出的建议是一个合并。这将使featurex分支具有任何状态,并尝试将其与的当前状态合并our-team,提示您执行一个大的合并提交并修正所有合并错误,然后再推至our-team。所不同的是,你所申请的featurex提交之前our-team新的提交,然后固定的差异。您也不会重写历史记录,而是向其中添加一个提交,而不是重写之前的提交。

这两个选项均有效,并且可以同时使用。通常,(如果您使用的是广泛使用的工具和方法,例如git-flow)用于功能分支,通常是将其合并到主分支中(通常要通过合并请求),并解决所有冲突变成一个(或多个)合并提交。

变基是一个有趣的选项,它可以帮助您在最终进行合并之前修复分支,并减轻必须进行一次大合并提交的痛苦。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.