【问题标题】:How to rebase both locally and remotely?如何在本地和远程重新定位?
【发布时间】:2025-12-08 23:40:02
【问题描述】:

橙色表示本地分支,黄色表示远程分支。

我在本地重新设置了我的分支。然后将更改推送到远程,我执行了一次拉动(因为它通知我我的分支现在落后了),然后是一次推送。我应该做强制推动吗?还是删除remote再推送?

由于两个分支现在“合并”,我最好的做法是执行合并的重置/删除,删除远程分支,然后再次推送?

【问题讨论】:

  • 不要强制推送。曾经。这是一种不好的做法,当一个以上的人在一个分支上工作时,可能(将会)导致头痛。
  • @AndrejsCainikovs 看到您的建议让我的开发人员感到多么温暖。在 Stack Overflow 上,我多次看到人们评论和回答“只需强制推送以消除错误消息”,而没有解释后果。我从这些人那里看到了很多关于后果的新问题,比如“我刚刚删除了我同事的提交,为什么会发生这种情况以及我们如何解决它”,就在有人告诉他们“只是强制推送”之后"。
  • 在这个问题中检查我的答案*.com/questions/59662452/…,实际上 rebase 做了什么,而不是拉,为什么强推是好的。

标签: git merge rebase behind


【解决方案1】:

假设你有一个分支master 和一个分支feature,它从master 的某个提交开始。然后,你将那个分支推送到远程:

git checkout master
git checkout -b feature
/* do some stuff, commits, etc */
git push origin feature

接下来,您的一位同事在master 上提交。您希望在您的分支feature 中进行这些更改,因此您决定这样做:

git checkout master
git pull origin master

git checkout feature
git rebase master

如果您想将 feature 分支推送到远程,使其看起来与您的本地存储库相同,则需要强制标志:

git push -f origin feature

这是否是好的做法是另一个问题。例如,您可以将其推送到另一个分支。使用git,总是有很多选择。

【讨论】: