6

最近、git サーバーに HEAD というブランチがあることに気付きました。これをローカルで実行しようとしましたが、git はこれがあいまいであると警告します。このブランチを削除/名前変更することで発生する可能性のある恐ろしい問題はありますか?

4

3 に答える 3

4

サーバーには、デフォルトのブランチを指す というブランチ ポインタが必要です。HEADデフォルトでは、次のgit branch -rように表示されます。

origin/HEAD -> origin/master
于 2013-05-06T18:19:18.110 に答える
2

ベアレポに「HEAD」があるのは正常です。HEAD は通常のブランチではなく、ブランチへのポインタであることに注意してください。

  1. 裸でない場合、「HEAD」「ブランチ」はチェックアウトされたブランチを指します。
  2. ベア リポジトリの場合、デフォルト ブランチ、つまり、ベア リポジトリが非ベア リポジトリにクローンされるときに作業ディレクトリとしてチェックアウトされたブランチを指します。多くの場合、「マスター」を指しますが、別のブランチを指すこともできます。
于 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 はすぐに失敗しません。HEADFETCH_HEAD編集: Git の新しいバージョンは、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 に答える