我们的团队最近转向git,从svn和hg迁移.因此,当他们检查树的尖端时,根据GUI,他们倾向于检查特定的提交或本地分支而不是新的跟踪分支,而不了解git是如何工作的.
所以我的问题是为什么分离的HEAD甚至存在?
为什么总是检查一个新分支不能默认?(我对git的理解有限)
教育/培训肯定有所帮助,但总会有人对git感兴趣......
你们如何管理呢?
顺便说一句,我知道如何修复它们.我已经阅读了这个网站上的很多帖子.
这更适用于知识共享以及您如何预防或管理.
更新:
在阅读下面提供的详细解释后,我现在意识到我的问题应该是"为什么git在签出新的远程分支时会给出一个独立的HEAD?".无论如何,答案会给你一个很好的理解!
[...]为什么分离的HEAD甚至存在?为什么总是检查一个新分支不能默认?
让我尝试以下比喻.如果您认为您的Git存储库是一个记录您的存储库历史的相册...
HEAD引用视为您的一个手指,从而使该书在特定页面处保持打开状态.现在,假设你被允许只在已有书签的地方打开书.这将是非常严格和笨拙的:你必须创建和使用许多书签才能访问你历史的某些页面:

相反,Git允许您浏览书籍并在您喜欢的任何页面上打开它.然后,如果您注意到您感兴趣的特定快照,则可以随时为其创建新书签(分支).
简而言之,这就是为什么detached-HEAD状态很有用.它允许您检查任何提交,甚至是没有分支当前指向的提交.如果您决定在有问题的提交上建立全新的工作,那么创建一个指向该提交的新分支是有意义的; 但是,否则,创建一个新的分支将是过度的.
为什么git在签出新的远程分支时会给出一个独立的HEAD?
我猜你可能会跑
git checkout <remote-branch>
Run Code Online (Sandbox Code Playgroud)
并且惊讶于它分离了HEAD.你需要知道Git的区别
如果你只是跑
git checkout <remote-branch>
Run Code Online (Sandbox Code Playgroud)
将不会创建您玩的本地分支,并且您将最终处于分离HEAD状态.你可能想跑
git checkout -b <new-local-branch> <remote-branch>
Run Code Online (Sandbox Code Playgroud)
代替.这将创建并检出指向与远程分支相同的提交的新本地分支.HEAD那时没有超然.