Подтвердить что ты не робот

Git: разница между "branchname" и "refs/head/branchname"

Лучше всего объяснить на примере: я на ветке 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"?

В чем разница?

4b9b3361

Ответ 1

Ссылка ref указывает на фиксацию, например, ветки (головки), теги и удаленные ветки. В вашем каталоге .git/refs вы должны видеть главы, пульты и теги, предполагая, что у вас есть все три типа ссылок в вашем репозитории.

refs/heads/0.58 указывает ветвь с именем 0.58. Если вы не укажете, в каком пространстве имен находится ref, git будет выглядеть по умолчанию. Это делает использование только 0.58 предположительно неоднозначным - у вас могут быть как ветка, так и тег с именем 0.58.

Ответ 2

Просто для кого-то, кто любопытен - git show-ref, который доступен с Git v1.8.2.2, покажет вам все ссылки, которые у вас есть в вашем локальном репозитории.