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

Git 如何合并本地和远程分支之间的更改?,git,Git,我的git存储库中有两个分支: capsule-os * remotes/m/ics capsule os是一个分支,我的本地更改为remotes/m/ics分支。我使用(并构建)capsule os分支,但remotes/m/ics有时会更新,我希望将此更改与本地分支同步(实际上,将我的更改添加到此远程分支)。我该怎么办?假设您的遥控器名为m: git pull m ics 假设您的遥控器名为m: git pull m ics 是正确的,但我认为可能值得添加一个答案,采用另一种方法,

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

  capsule-os
* remotes/m/ics

capsule os是一个分支,我的本地更改为remotes/m/ics分支。我使用(并构建)capsule os分支,但remotes/m/ics有时会更新,我希望将此更改与本地分支同步(实际上,将我的更改添加到此远程分支)。我该怎么办?

假设您的遥控器名为
m

git pull m ics

假设您的遥控器名为
m

git pull m ics
是正确的,但我认为可能值得添加一个答案,采用另一种方法,即重新定基,而不是合并

如果您尚未发布
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
branch”来限定这一点,是因为重写分支的历史记录可能会给从事该分支原始版本工作的合作者带来困难。然而,如果这仍然是私人工作,那么重新定基是一种很好的方法,可以让您的分支与上游保持最新,并且保持历史记录的简单。

是正确的,但我认为可能值得添加一个替代方法,即重新定基,而不是合并

如果您尚未发布
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
branch”来限定这一点,是因为重写分支的历史记录可能会给从事该分支原始版本工作的合作者带来困难。然而,如果它仍然是私人工作,那么重新定基是一种很好的方法,可以使您的分支与上游保持最新,并且保持历史记录的简单性