如何合并本地和远程分支之间的更改



我的 git 存储库中有 2 个分支:

  capsule-os
* remotes/m/ics

capsule-os 是我对遥控器/m/ics 分支进行本地更改的分支。我使用(并构建(capsule-os 分支,但 remote/m/ics 有时会更新,我想将此更改与我的本地分支同步(实际上,将我的更改添加到此远程分支(。我该怎么办?

Amber 的答案是正确的,但我认为可能值得用变基而不是合并的替代方法添加一个答案。

如果您尚未发布capsule-os分支,则可能需要将更改"变基"到更新的m/ics分支上,例如:

# Make sure you're on the right branch:
git checkout capsule-os
# "Replay" all of your commits on top of m/ics, and update
# capsule-os to point to the result:
git rebase m/ics

(然后您可能需要解决一些冲突 - 如果您不能轻松做到这一点,您可以将capsule-os分支恢复到最初使用 git rebase --abort 时的状态。

作为替代方案,您可以获取新版本的ics分支,并一次性将其变基为基数:

git pull --rebase m ics

使用git rebase有很多不同的方法,但它们本质上都涉及一组提交,并且对于每个提交,尝试将提交引入的更改重新应用到其他提交上。 这通常用于将一组提交"移动"到更新的上游分支上,以保持历史记录简单。

我用"如果你还没有发布capsule-os分支"来限定这一点的原因是,重写分支的历史可能会给正在处理该分支原始版本的协作者带来困难。 但是,如果它仍然是私人工作,那么变基是让您的分支机构与上游保持同步并仍然保持历史记录简单的好方法。

假设您的遥控器名为m

git pull m ics

http://gitref.org/remotes/#pull

最新更新