最近、git サーバーに HEAD というブランチがあることに気付きました。これをローカルで実行しようとしましたが、git はこれがあいまいであると警告します。このブランチを削除/名前変更することで発生する可能性のある恐ろしい問題はありますか?
質問する
1690 次
3 に答える
4
サーバーには、デフォルトのブランチを指す というブランチ ポインタが必要です。HEAD
デフォルトでは、次のgit branch -r
ように表示されます。
origin/HEAD -> origin/master
于 2013-05-06T18:19:18.110 に答える
2
ベアレポに「HEAD」があるのは正常です。HEAD は通常のブランチではなく、ブランチへのポインタであることに注意してください。
- 裸でない場合、「HEAD」「ブランチ」はチェックアウトされたブランチを指します。
- ベア リポジトリの場合、デフォルト ブランチ、つまり、ベア リポジトリが非ベア リポジトリにクローンされるときに作業ディレクトリとしてチェックアウトされたブランチを指します。多くの場合、「マスター」を指しますが、別のブランチを指すこともできます。
于 2013-05-06T18:42:52.313 に答える
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 checkout master
Switched to branch 'master'
上記はすべて、OS X に Homebrew を介してインストールされた git バージョン 2.3.0 を使用したものです。
上記の呼び出しの多くを誤って入力するのは簡単ですが、残念ながら、特別な意味が適用されない場所に(または) が指定されている場合、Git はすぐに失敗しません。編集: Git の新しいバージョンは、HEAD
FETCH_HEAD
HEAD
. たとえば、git バージョン 2.22.0 の場合:
~/code/foo/bar (master) $ git checkout -b HEAD
fatal: 'HEAD' is not a valid branch name.
ただし、というブランチFETCH_HEAD
は引き続き許可されます。
于 2015-04-13T19:23:22.143 に答える