我不确定你的回购是什么样子,但这是最坏的情况。
假设您的origin
存储库看起来像这样
起源:
o---o---A---B---C 大师
你的本地存储库看起来像这样,
吉姆普尔斯:
o---o---A---B---C 主控,起源/主控
\
D---E---F 话题1
然后,在您的分支重命名后,您的本地存储库如下所示:
吉姆普尔斯:
o---o---A---B---C old_master, origin/master
\
D---E---F主
现在,当你推动master
那origin
将是一个非快进更新。推送后,origin
存储库将如下所示:
起源:
o---o---A...B...C(B & C 是孤立的提交)
\
D---E---F主
这对于可能在C
. 例如,如果 Sally 与您合作,她的存储库可能如下所示:
莎莉:
o---o---A---B---C 原点/主控
\
G---H---我掌握
现在,如果您执行非快进推送,而 Sally 执行fetch
她的存储库,则会如下所示:
莎莉:
D---E---F 原点/主控
/
o---o---A---B---C
\
G---H---我掌握
现在 Sally 必须弄清楚如何将她的工作(G、H、I)恢复到存储库中。如果她只是进行合并,origin/master
那么 B 和 C 中的更改将返回到存储库中(哎呀!)。相反,她将不得不cherry-pick
或rebase
她的 GHI 更改为origin/master
.
Git 让你这样做很酷,但它有点自找麻烦。你真的希望莎莉注意到这种情况。这就是为什么您应该在执行此操作时警告所有其他贡献者,以便他们能够适当地处理更改。
注意:以上是最坏的情况。如果您的topic1
分支从master
C 出发,那么这种变化是快进的,没有问题。