Почему Git по умолчанию не является "master master"? - PullRequest
35 голосов
/ 24 апреля 2011

Я много раз пытался сделать

git pull

, и он говорит, что ветвь не указана.Итак, ответ в Как заставить git всегда извлекать данные из определенной ветви? , кажется, работает.

Но мне интересно, почему Git по умолчанию не использует ветку master?Если ничего не указано, то имеет ли смысл иметь в виду ветку master?Git пытается оправдать свое имя - «мерзавец» = неприятный человек, поэтому, когда вы спрашиваете, который час, он всегда говорит вам, «поскольку вы не сказали, хотите ли вы знать местное время илиСреднее время по Гринвичу, прерывание. "

Ответы [ 3 ]

79 голосов
/ 24 апреля 2011

git пытается использовать разумные значения по умолчанию для git pull в зависимости от ветви, в которой вы сейчас находитесь.Если вы получаете сообщение об ошибке из git pull, когда вы используете master, это означает, что вы не настроили восходящую ветвь для master.Во многих ситуациях это уже настроено - например, когда вы клонируете из репозитория, git clone настроит пульт origin для указания на этот репозиторий и настроит master с origin/master в качестве восходящего, так1009 * будет просто работать ™.

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

 git branch --set-upstream master origin/master

... хотя по состоянию на git 1.8.0Вы должны использовать --set-upstream-to, так как прежнее использование не считается устаревшим из-за путаницы с ошибками.Итак, для git 1.8.0 и более поздних версий вы должны сделать:

 git branch --set-upstream-to origin/master

Или вы также можете настроить соответствующую конфигурацию при нажатии:

 git push -u origin master

... и git pull будет делать то, что вы хотите.

7 голосов
/ 24 апреля 2011

Как упоминалось выше, git clone устанавливает все значения по умолчанию соответствующим образом. Я обнаружил, что использование опции -u проще всего настроить с помощью существующего репо.

git push -u origin master

Вы можете проверить, что было удаленно настроено, используя

git remote -v

Подробнее об этом см. git help remote.

0 голосов
/ 24 апреля 2011

Почему вы хотите использовать по умолчанию извлечение из основной ветки? Что если бы у меня был репозиторий без ветки с именем master? В конце концов, это просто ветка с именем "master".

Мой ответ на ваш вопрос заключается в том, что git не хочет мешать вам и решать за вас, каким должен быть рабочий процесс. Обычно это не проблема, так как обычно у вас уже есть настройка удаленной ветки, поэтому git знает, что делать, когда вы используете «git pull» без аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...