Болтающаяся ветка?


Возможно, это уже заданный вопрос, но я просто не знаю, как правильно назвать проблему - поэтому, пожалуйста, направьте меня или ответьте (Да, я видел Этот вопрос, но не смог получить слишком много от ответа).

Я пытаюсь git pull , но получаю следующее сообщение:

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

If you often merge with the same branch, you may want to
use something like the following in your configuration file:
    [branch "2012_05_09_my_branch"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

Вероятно, похоже, что мой рабочий каталог как бы "висит", не будучи прикрепленным ни к одной ветке, я прав? Если да-пожалуйста, посоветуйте, как подключить его обратно к сети. правильная ветвь (например, 2012_05_09_my_branch). Возможно, я даже ошибаюсь в этом (будучи полным новичком GIT), в этом случае, пожалуйста, объясните, что происходит и что я могу с этим сделать.

Уточненный вопрос: что мне нужно сделать, чтобы запустить git push и git pull успешно, не получая сообщение выше?

Обновление: когда я запускаю git branch, я получаю:

* 2012_05_09_my_branch
  master

Что своего рода , вероятно, означает, что я нахожусь на своей локальной ветви 2012_05_09_my_branch, которая не связана ни с одной из удаленных ветвей. ветви?

Обновление N2: Почему я должен все время делать "-set-upstream"? - очень стоит прочитать в качестве дополнительного материала (нашел только сейчас).

3 2

3 ответа:

Это Не, что ваш рабочий dir не подключен к ветви, но у вас нет настройки, что такое одноранговая ветвь на удаленном компьютере для вашей локальной ветви. Вы можете "соединить" их вместе с помощью:

git branch --set-upstream 2012_05_09_my_branch remotes/<your remote>/2012_05_09_my_branch

Где - это сервер, определенный в .git / config, обычно (при работе с одним сервером) это origin

править: более безопасный способ-использовать remotes/<remote>/<branch> вместо <remote>/<branch>

git status

Поможет вам узнать, на какой ветке вы находитесь (если таковые имеются). Команда

git branch

Даст список о локальных филиалах, которые у вас есть (git branch-a также перечисляет удаленные). И, конечно, вы можете использовать

git checkout <branchname>

Чтобы превратить вашу рабочую копию в выбранную ветвь.

Когда вы создаете локальную ветвь и хотите поместить ее в удаленный репозиторий, вам нужно выполнить следующую команду:

$ git push origin 2012_05_09_my_branch