您在本地仓库中向my-destinations 添加了提交,而不是master:
a <-- master ref is (a)
\
b - c - d <-- my-destinations ref is (d)
当您推送到远程仓库origin 时,它只需要您现有的本地master 分支,并使远程仓库master 保持不变。换句话说,远程master 已更新为引用(a),就像您的本地master。如果它已经在 (a) 处,那么遥控器就不会发生任何变化。
您的遥控器被命名为origin,这是标准命名约定。因此,如果您为远程 master 添加本地跟踪分支,它将被称为 origin/master,并且在该分支发生推送后它将引用相同的提交:
a <-- master (a)* <-- origin/master (a)
\
b - c - d <-- my-destinations (d)
(*) - Indicates branch that is checked out
请注意,如果您在签出my-destinations 时没有推送,那么origin 不会有您的新提交 b、c 和 d,除非您使用命令行标志或其他方法推送所有分支到origin。如果您确实在签出 my-destinations 的情况下进行推送,那么远程也会有 b-c-d 提交,而 origin/my-destinations 本地跟踪引用也将指向 (d)。
但最大的问题是如何将您的新提交返回到master。要从my-destinations 获得对master 的新提交,您只需在签出主控的情况下git merge my-destinations,在这种情况下,它只会“快进”主控到(d)提交,因为@987654342 @ 引用 my-destinations 的父级(即它们没有分歧——您可以将 abcd 视为一条直线而不是一个分支)。合并后,您将拥有:
a <-- origin/master (a)
\
b - c - d <-- master (d)* <-- my-destinations (d)
然后,在推送到远程之后,origin/master 将更新,以便在提交 (d) 时匹配 master - 即所有三个 ref 都将指向 (d)。
注意:如果master 和my-destinations 发生分歧,您可以合并或变基以将它们重新组合在一起。在 Google 中查找“visual git tutorial”,您应该会看到几个很好的教程,这些教程将引导您完成这些。
另请注意:我推荐 Git Extensions 作为一种开源 GUI 工具,它可以帮助您通过 GUI 更轻松地准确了解分支、提交、本地和远程的情况。它帮助我更轻松地学习 Git,我总是在后台打开它,同时在前台使用 Visual Studio 或其他工具。对于您打开的任何 repo,它基本上都会向您显示类似于上图的内容,因为所做的更改。