Git Push Questions - Pedantic - PullRequest
       0

Git Push Questions - Pedantic

4 голосов
/ 19 февраля 2010

У меня есть основная ветвь и ветвь searchfeature в моем проекте. Я перенес ветку searchfeature в удаленный репозиторий, пока все нормально

Когда я работал над этой веткой этим утром, я сделал "git push", я получил следующее:

warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated.  This may
warning: not necessarily be what you want to happen.
warning: 
warning: You can specify what action you want to take in this case, and
warning: avoid seeing this message again, by configuring 'push.default' to:
warning:   'nothing'  : Do not push anything
warning:   'matching' : Push all matching branches (default)
warning:   'tracking' : Push the current branch to whatever it is tracking
warning:   'current'  : Push the current branch

Так что я пошел вперед и сделал git config push.default tracking и вуаля, git push работает без проблем, без предупреждения.

Что я не понимаю, так это то, в чем разница между «текущим» и «отслеживанием», если вы не делаете «к тому, что он отслеживает», то в чем смысл «текущего» - куда бы он пошел? какие сценарии вы бы использовали текущий, а не отслеживание?

Кроме того, по каким сценариям можно использовать "ничто"?

1 Ответ

6 голосов
/ 19 февраля 2010

С Git1.6.3 :

Когда пользователь не сообщает "git push", что нажимать, он всегда выдвигает соответствующие ссылки.
Для некоторых это неожиданно, и была введена новая переменная конфигурации push.default, позволяющая изменить другое поведение по умолчанию.
Чтобы объявить о новой функции, выдается большое предупреждение, если она не настроена и делается попытка git push без аргументов.

Таким образом, разница между током и трекингом такова:

  • current будет принимать соответствующий ref (удаленная ветвь с с тем же именем , которая может не существовать)
  • Отслеживание будет основано на использовании удаленной ссылки на ссылке отслеживания, связанной с этой локальной ветвью. Если он ничего не отслеживает, он не будет выдвигаться. Но он может отслеживать удаленную ветку с другим именем. Remo

Примечание: default nothing было бы полезно для репозитория "только для чтения", созданного только для консультации по контенту, где работа не должна выполняться и публиковаться где-либо.

См. Также ответвление git push current SO вопрос.


Обновление за март 2012 года: Остерегайтесь: эта политика "соответствия" по умолчанию может скоро измениться :

См. " Пожалуйста, обсудите: что должен делать" git push ", когда вы не говорите, что нажимать? "

В текущей настройке (т. Е. push.default=matching), git push без аргумента будет выдвигать все ветви, которые существуют локально и удаленно, с тем же именем .
Обычно это уместно, когда разработчик проталкивает свой собственный общедоступный репозиторий, но может сбивать с толку, если не опасно при использовании общего репозитория.

Предложение состоит в том, чтобы изменить значение по умолчанию на 'upstream' , то есть выдвинуть только текущую ветвь, и подтолкнуть ее к ветке, из которой будет работать git pull.
Другой кандидат - 'current'; это толкает только текущую ветку к удаленной ветке с тем же именем.

То, что обсуждалось до сих пор, можно увидеть в этой теме:

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

Предыдущие соответствующие обсуждения включают в себя:

Чтобы присоединиться к обсуждению, отправьте свои сообщения по адресу: git@vger.kernel.org

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