以下图片显示了我们当前的Git-Tree的一部分。
我们真正不了解的是它如何变得如此混乱。
请记住,这都是一个分支,最低的节点是“ main-master-node”,其他节点也位于master分支上,但它们看起来仍然是不同的分支。
我们正在使用Visual Studio 2017和GFS的TFS。
我们对此感到完全困惑,需要经常检查三次以查看它是主分支还是其他分支。
我们是在做错事还是对每个人来说都是正常的?
答案 0 :(得分:2)
远程存储库上有一个master
分支。 Bob克隆了存储库,然后在其本地master
分支上工作并提交。 Eve还会克隆存储库并在其本地master
分支上工作并提交。她很快,因此将提交推送到远程存储库。远程master
的提交已更新。当鲍勃最终完成他所做的工作时,他不能将其推送到远程master
分支,因为他发散了:他在自己的master
上承诺远程没有,同时远程已经承诺Bob的master
(夏娃的人)还没有。
现在呢?鲍勃可以合并他的master分支到远程master分支,通过创建一个“合并”两个分支的合并提交使他的提交可用,也可以 他的本地{ {1}}到远程master
上。后者会将自己的提交放在远程master
的提交之上,就像他在夏娃的更改已被合并之后会提交一样。
此过程的详细信息取决于您选择的git服务器管理工具,而我对TFS却一无所知,但这就是为什么有必要合并或重新设置基础的原因,即使您都在master分支上工作
答案 1 :(得分:1)
您看到的是我建议不要使用Visual Studio git功能而偏爱外部工具的主要原因之一。
默认情况下,VS正在执行git pull
(因此,通过合并)以将本地分支与远程存储库同步。当您在与同步的分支相同的分支上工作时,这是一件坏事。
在大多数情况下,您执行git pull --rebase
来同步(并保持线性历史记录)并仅在将一个分支合并到另一个分支时才保留合并。
您可以设置git设置(如果我记得很好,请设置为“ pull.rebase”),以使VS在同步时进行重新设置。
我认为在VS的最新版本中,即使它不是非常用户友好,您也可以重新设置基准。
或者您可以使用更好的git工具(例如Gitextensions:https://github.com/gitextensions/gitextensions)使您可以更好地了解git的工作原理,正在发生的事情以及做更高级的事情!