我不确定你的回购是什么样子,但这是最坏的情况。
假设您的 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 她的 G-H-I 更改为 origin/master。
Git 允许您这样做很酷,但它有点自找麻烦。你真的希望莎莉注意到这种情况。这就是为什么您应该在这样做时警告所有其他贡献者,以便他们能够适当地处理更改。
注意:以上是最坏的情况。如果您的 topic1 分支在 C 处从 master 出发,那么该更改是快进并且没有问题。