如何将开发分支的最新更改合并到我的当前分支?

24

我们的工作分支如下。

master
dev
person A
person B
我们都在各自的分支上工作,即人A人B(在同一项目中工作)。当人A完成工作后,他将提交更改到他的分支,并创建一个拉取请求来合并更改到dev,其他人B查看并批准。经过批准后,更改将保存在dev中。 B如何从dev获取A最新的更改并应用到他的人B分支上。我们使用GitHub Desktop进行所有Git推送/拉取操作,但也乐意学习命令。谢谢。

git pull origin dev 是通常的方法,假设 A 已将他的更改推送到上游。 - paxdiablo
2个回答

47

最好的做法是在人员 A 将更改推送到 dev 后尽快让人员 B 将这些更改合并到他们的分支 b 中。这样,人员 B 可以在最新的代码上工作,并且将来将其合并到 dev 上会更加容易。

选项1, 拉取

  1. 将所有更改提交到分支 feature_branch(git 状态显示为 clean
  2. git checkout dev
  3. git pull - 这会将更改从计算机 b 下载到本地,并将这些更改合并到计算机 b 中当前已检出的本地分支中(在这种情况下是分支 dev)。此操作通常应该是“快进”操作(因此没有合并冲突)
  4. git checkout feature_branch
  5. git merge dev - 这将从 b 的本地 dev 合并更改到 feature_branch 中。
  6. git mergetool - 解决冲突
  7. git commit - 提交您的合并

使用此选项,计算机 b 的本地 devfeature_branch 都具有最新的更改。

选项2, 获取

  1. 将所有更改提交到分支 feature_branch(git 状态显示为 clean
  2. git fetch origin dev - 这个命令会下载最新的 dev 分支代码,但不会将其合并到本地的 dev 分支。
  3. git merge origin/dev - 这个命令会将从远程仓库下载的 dev 分支代码合并到 feature_branch 分支中。

在这种情况下,b 的本地 feature_branch 将包含来自远程仓库最新的 dev 分支的更改,并且他们的本地 dev 不会包含这些更改。这是可以接受的,因为b 并没有在 dev 上工作,而是在 feature_branch 上工作。


我喜欢第二个选项,因为我不需要切换到 dev 分支,但两种选项都是正确的。


1
选项2会导致我的dev分支被合并到feature_branch中,而合并提交中没有任何已提交的更改。我之所以注意到这一点,是因为使用选项1时出现了多个合并冲突,但使用选项2时没有出现。我做错了什么@tymtam?非常感谢 :) - Flo
你在 dev 分支上有未推送的本地提交吗? - tymtam
没有问题,一切都是最新的并且已经推送了。我使用了选项1,它起作用了。我只是想分享一个小技巧,希望能帮到其他人。 - Flo

7

这些是我用命令行界面执行的步骤。

  1. 检出 dev 分支(git checkout dev)
  2. 获取最新的 dev 分支(git pull)
  3. 检出 B 分支(git checkout B)
  4. 将 dev 分支合并到 B 分支(git merge dev)

您也可以使用 GitHub 桌面版来跟随这些步骤。


确保 B 中的所有更改都已提交。 - tymtam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接