Я уже давно пользуюсь git, но мне никогда не приходилось настраивать новое удаленное репо, и мне было любопытно сделать это. Я читал учебные пособия, и я не понимаю, как заставить работать «git push».
Если я просто использую git push
его, то просит посмотреть ветку по умолчанию (?), Чтобы указать на? В чем разница между этими двумя вариантами?
git config --global push.default matching
git config --global push.default simple
Совпадение просто выдвигает любые ветви, которые у меня есть, в моем локальном репо, и если они не совпадают, я должен вручную сказать ему, чтобы подтолкнуть все новые локальные ветки, которые у меня есть, правильно? Это лучшая практика для использования или просто лучше?
git
git-push
git-pull
git-remote
мистифицировать
источник
источник
pull.default
доступно обновление всех этих веток локальноОтветы:
git push
может выдвинуть все ветви или одну ветку в зависимости от этой конфигурации:Нажмите на все ветви
Это подтолкнет все ветви к удаленной ветви и объединит их. Если вы не хотите выдвигать все ветви, вы можете нажать только текущую ветку.
Нажмите только текущую ветку
Так что, на мой взгляд, лучше использовать эту опцию и продвигать код по веткам. Лучше подталкивать ветки вручную и индивидуально.
источник
push.default current
ответ от @UpAndAdam. Не знал об этом.simple
больше не вариант. В1.7.8.4
(и раньше?) Это приводит к ошибке при попытке нажать. ноcurrent
все еще доступенtracking
-> подтолкнуть текущую ветвь к восходящей ветви.simple
не имеет смысла, противоречит этому ответу и является неправильным - что делает этот ответ запутанным. На связанной странице написаноsimple
«будет выдвигать ветви одну за другой. В основном связаны с текущей веткой». Означает ли это, что он будет толкать ветви последовательно, а не параллельно? Что означает «в основном связаны»? Затем описаниеsimple
идет на процитировать описаниеmatching
, которое можно было бы подумать означает описание дляmatching
также относитсяsimple
. Но очевидно, что это не так.Из документации GIT: Git Docs
Ниже дается полная информация. Короче говоря,
simple
только нажмитеcurrent working branch
и даже тогда, только если он также имеет то же имя на пульте. Это очень хорошая настройка для начинающих и станет по умолчанию вGIT 2.0
Принимая во внимание,
matching
что все удаленные ветки будут иметь одинаковое имя на пульте. (Без учета вашей текущей рабочей ветки). Это означает, что потенциально много разных веток будут добавлены, включая те, которыми вы, возможно, даже не захотите делиться.В моем личном использовании я обычно использую другую опцию:
current
которая выдвигает текущую рабочую ветвь (потому что я всегда ветвлюсь для любых изменений). Но для начинающего я бы предложилsimple
источник
git push origin master
он будет делать то же самое. Суть режимов и значений по умолчанию, как правило, заключается в том, что происходит, когда вы просто говорите,git push
а не говорите об этом удаленно или ветви. Какая настройка по умолчанию? Вы имеете в виду настройку по умолчанию для push.default? настройка по умолчанию, в которой версия git ... если вы не получили его, ваш комментарий очень расплывчатый.Примечания к выпуску Git v2.0
Примечания обратной совместимости
Когда
git push [$there]
не говорится, что нажать, мы до сих пор использовали традиционную семантику «соответствия» (все ваши ветви были отправлены на удаленный сервер, если там уже есть ветви с одинаковыми именами). В Git 2.0 по умолчанию теперь используется «простая» семантика, которая выдвигает:только текущая ветвь к ветке с тем же именем, и только если текущая ветвь настроена на интеграцию с этой удаленной ветвью, если вы отправляете на тот же самый удаленный, из которого вы выбираете; или
только текущая ветка на ветку с тем же именем, если вы отправляете на удаленный, который не там, где вы обычно выбираете.
Вы можете использовать переменную конфигурации "push.default", чтобы изменить это. Если вы старый таймер, который хочет продолжать использовать семантику «соответствия», вы можете, например, установить для переменной «соответствие». Прочитайте документацию для других возможностей.
Когда
git add -u
иgit add -A
выполняются внутри подкаталога без указания путей для добавления в командной строке, они работают со всем деревом для согласованности сgit commit -a
другими командами (эти команды используются только для текущего подкаталога). Скажитеgit add -u .
или,git add -A .
если вы хотите ограничить операцию для текущего каталога.git add <path>
то же самое, что иgit add -A <path>
сейчас, так чтоgit add dir/
он обнаружит пути, которые вы удалили из каталога, и запишет удаление. В более старых версиях Gitgit add <path>
использовался для игнорирования удалений. Вы можете сказатьgit add --ignore-removal <path>
добавить только добавленные или измененные пути<path>
, если вы действительно этого хотите.источник