1. ホーム
  2. git

[解決済み] git: "branchname "と "refs/heads/branchname "の違い

2022-09-01 23:05:33

質問

例で説明するのが一番わかりやすいと思います。私はリポジトリのブランチ0.58におり、これは私がプルする方法です。

git pull origin 0.58

ただ"git pull"を呼び出すと、こうなります。

ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.0.58.remote = <nickname>
    branch.0.58.merge = <remote-ref>
    remote.<nickname>.url = <url>
    remote.<nickname>.fetch = <refspec>

See git-config(1) for details.

どうやら、そのブランチをチェックアウトしたときに、何かオプション(-track ?)を忘れていたようです。とにかく、今はこれを設定しています。

git config branch.0.58.merge 0.58
git config branch.0.58.remote origin

そして、これはうまくいくようです。そして、興味本位で、この設定について他のブランチを覗いてみました。

ip238:openlierox az$ git config branch.0.57.merge
refs/heads/0.57
ip238:openlierox az$ git config branch.0.57.remote
origin

今思ったのですが、"0.58"と、"refs/heads/0.58"と指定すればいいのでしょうか?

具体的にどのような違いがあるのでしょうか?

どのように解決するのですか?

A ref はコミットを指すもので、たとえばブランチ(heads)、タグ、リモートブランチなどがあります。head、remote、tag は、あなたの .git/refs ディレクトリに表示されるはずです。この3つのタイプの参照はすべてリポジトリにあると仮定します。

refs/heads/0.58 ブランチ を 0.58 という名前で指定します。どの名前空間の参照を指定しなかった場合、git はデフォルトの名前空間を探します。このため、0.58 のみを使用することは曖昧になります。0.58 という名前のブランチとタグの両方を使用することができます。