我最近注意到我们的git服务器有一个名为HEAD的分支。我试过在本地做这个,git警告我这是不明确的。通过删除/重命名这个分支,我们可能遇到任何潜在的可怕问题吗?
答案 0 :(得分:3)
您的服务器应该有一个名为HEAD
的分支指针,它将指向您的默认分支。默认情况下,git branch -r
会向您显示:
origin/HEAD -> origin/master
答案 1 :(得分:2)
裸机壳有'HEAD'是正常的。请记住,HEAD不是正常分支,而是指向分支的指针。
答案 2 :(得分:2)
创建一个名为HEAD
的远程分支是可能的,并且似乎没有特别危害:
~/code/foo/bar (master) $ git push origin master:HEAD
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:foo/bar
* [new branch] master -> HEAD
~/code/foo/bar (master) $ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
~/code/foo/bar (master) $ git push origin :HEAD
To git@github.com:foo/bar
- [deleted] HEAD
~/code/foo/bar (master) $ git branch -a
* master
remotes/origin/master
创建一个名为HEAD
的本地分支具有更糟糕的效果:
~/code/foo/bar (master) $ git checkout -b HEAD
Switched to a new branch 'HEAD'
Your branch is up-to-date with 'origin/master'.
~/code/foo/bar (HEAD) $ git checkout -b fubar
warning: refname 'HEAD' is ambiguous.
fatal: Ambiguous object name: 'HEAD'.
~/code/foo/bar (HEAD) $ git branch -a
* HEAD
master
remotes/origin/master
~/code/foo/bar (HEAD) $ rm .git/refs/heads/HEAD
~/code/foo/bar (HEAD*) $ git co -b fubar
Switched to a new branch 'fubar'
以上所有内容都是在OS X上通过Homebrew安装的git版本2.3.0。
很容易偶然输入上述许多调用,不幸的是,当在特殊含义不适用的地方指定HEAD
(或FETCH_HEAD
)时,Git不会快速失败。