为什么我们的Git-Tree看起来如此混乱

时间:2019-07-04 12:19:15

标签: git tfs

以下图片显示了我们当前的Git-Tree的一部分。

我们真正不了解的是它如何变得如此混乱。

请记住,这都是一个分支,最低的节点是“ main-master-node”,其他节点也位于master分支上,但它们看起来仍然是不同的分支。

我们正在使用Visual Studio 2017和GFS的TFS。

我们对此感到完全困惑,需要经常检查三次以查看它是主分支还是其他分支。

我们是在做错事还是对每个人来说都是正常的?

Our Git-Tree

2 个答案:

答案 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的工作原理,正在发生的事情以及做更高级的事情!