1

При проверке новой ветви (git checkout -b $BRANCH) я часто хочу отправить ее на конкретный пульт с тем же именем ветви. У меня есть два пульта, один с именем «происхождение» и один с именем «мой». Когда я хочу подтолкнуть такую новую ветку к «моей», я могу просто сделать

$ git push -u mine

Это подтолкнет ветку к refs/heads/$BRANCH на удаленной «шахте» и начнет ее отслеживать.

Однако, то же самое не работает для «исходного» пульта:

$ git push -u origin
fatal: The current branch $BRANCH has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin $BRANCH

(Использование git push -u origin $BRANCH , как показывает вывод, конечно, работает нормально, но я бы не стал повторять имя ветки, так как я мог бы его напечатать неправильно).

Почему один пульт дистанционного управления отличается от другого?

Соответствующий фрагмент из моего файла конфигурации:

[remote "origin"]
    url = ssh://git@server:/path/to/public/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/pull-requests/*/from:refs/remotes/origin/pr/*
[remote "mine"]
    url = ssh://git@server:/path/to/my/repo.git
    fetch = +refs/heads/*:refs/remotes/mine/*
    fetch = +refs/pull-requests/*/from:refs/remotes/mine/pr/*

Как вы можете видеть, эти конфиги выглядят одинаково (mutatis mutandis), но ведут себя по-разному. Название «происхождение» является каким-то особенным или есть другой конфиг, на который мне нужно обратить внимание?

Я использую GIT версии 2.7.0.

1 ответ1

0

Ветви отслеживания связаны с удаленной и удаленной ветками - посмотрите ветку в .git/config (branch.*.remote и branch.*.merge). В случае вашей ветки пульт "мой".

Взгляните на push.default в git-config(1) - поведение по умолчанию (simple) - отправлять текущую ветку в удаленную ветвь, а удаленную ветвь только в том случае, если обе ветви имеют одинаковые имена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .