Я очевидно ужасен в использовании git, несмотря на все мои попытки понять это.
С kernel.org для git push
:
-u
--set-вверх по течению
Для каждой ветки, которая обновлена или успешно отправлена, добавьте ссылку вверх по течению (отслеживание), используемую git-pull (1) без аргументов и другими командами. Для получения дополнительной информации см.
branch.<name>.merge
В git-config (1).
Вот branch.<name>.merge
из git config
:
branch.<name>.merge
Определяет вместе с
branch.<name>.remote
восходящей ветвью для данной ветки. Он сообщает git fetch / git pull, какую ветку объединять, а также может влиять на git push (см. Push.default). Когда он находится в ветке<name>
, он сообщает git fetch о том, что refspec по умолчанию помечен для объединения в FETCH_HEAD. Значение обрабатывается так же, как удаленная часть refspec, и должно совпадать с ref, который выбирается из remote, заданного параметром"branch.<name>.remote"
. Информация о слиянии используется git pull (который сначала вызывает git fetch) для поиска ветки по умолчанию для слияния. Без этой опции, git pull по умолчанию объединяет первую выборку refspec. Укажите несколько значений, чтобы получить слияние осьминога. Если вы хотите настроить git pull так, чтобы он сливался<name>
с другой веткой в локальном репозитории, вы можете указатьbranch.<name>.merge
в нужную ветку, и используйте специальные настройки. (период) дляbranch.<name>.remote
.
Я успешно настроил удаленный репозиторий с помощью github и успешно отправил свой первый коммит в него:
git push -u origin master
Затем я невольно успешно отправил свой второй коммит в мой удаленный репозиторий, используя:
git commit -m '[...]'
Однако, неправильно думать , что я должен был бы снова нажать на origin
от master
, я побежал:
# note: no -u
git push origin master
Что это сделало? Похоже, это никак не повлияло. Я "отменить" git push -u origin master
?
I'm apparently terrible at using git, despite my best attempts to understand it.
- У меня никогда не было, чтобы кто-то так хорошо меня восстанавливалОтветы:
Ключ "без аргументов git-pull". Когда вы делаете
git pull
из ветки, не указывая исходный удаленный или ветвь, git смотрит наbranch.<name>.merge
настройку, чтобы знать, откуда взять.git push -u
устанавливает эту информацию для ветви, которую вы нажимаете.Чтобы увидеть разницу, давайте используем новую пустую ветку:
Сначала мы нажимаем без
-u
:Теперь, если мы добавим
-u
:Обратите внимание, что информация об отслеживании была настроена таким образом, чтобы она
git pull
работала, как ожидается, без указания удаленного или филиала.Обновление: Бонусные советы:
git pull
этому параметру также влияет поведение по умолчаниюgit push
. Если вы привыкли использовать-u
для захвата удаленную ветку, которую вы собираетесь отслеживать, я рекомендую установить значение вашейpush.default
конфигурации вupstream
.git push -u <remote> HEAD
переместит текущую ветку в ветку с тем же именем<remote>
(и также настроит отслеживание, чтобы вы могли сделать этоgit push
после этого).источник
git push <remote> <branch>
делает вещи однозначными . Если вы отключите удаленное управление или ветку git, то вернетесь к настройкам конфигурации филиала, которые установлены для васgit push -u
.git push origin test
(чего нет-u
). Вы тогда показали, чтоgit push -u origin test
устраняет двусмысленность. Есть ли опечатка, или я просто снова был плотным?git push <remote> <branch>
это однозначно, я имею в виду то, что относительноgit push
которого зависит от конфигурации филиала. Точно так жеgit pull <remote> <branch>
однозначно иgit pull
полагается на конфигурацию ветви. Как только вы нажмете-u
, обаgit push
иgit pull
будут работать, как ожидалось.git push
- если вы не настроитеpush.default
себя,git push
используйте только конфигурацию восходящей ветви, чтобы решить, какую удаленную ветвь отправить , а не удаленную ветвь для обновления.git push origin master
это то же самое для другой стороны IE.git pull origin master
.. Так что если предположить изменение ветки, то вы можетеgit push origin branch_name
и то же на другую сторону IE.git pull origin branch_name
… такой же как:
Сделай последнее утверждение, если забудешь
-u
!Или вы могли бы заставить это:
Если вы позволите команде сделать это за вас, она выберет ваши ошибки, например, если вы набрали несуществующую ветку или нет
git remote add
; хотя это может быть то, что вы хотите. :)источник
master
, просто пример :)git branch master -u origin/master
details @ stackoverflow.com/a/2286030/790359-u
опцию, введитеgit push -u
сразу все будет в порядке.--setup-upstream
они будут устаревшими:The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
git branch --set-upstream-to=origin/master master
Проще говоря:
Технически
-u
флаг добавляет ссылку отслеживания на вышестоящий сервер, на который вы нажимаете.Здесь важно то, что это позволяет вам делать это
git pull
без предоставления дополнительных аргументов. Например, когда вы делаетеgit push -u origin master
, вы можете позже позвонитьgit pull
и мерзавец будет знать , что вы на самом деле имел в видуgit pull origin master
.В противном случае вам нужно будет ввести всю команду.
источник
-u
флаг наorgin master
каждое следующее нажатие, я буду ссылаться на него. И если я хочу изменитьgit pull
поведение, которое я должен запуститьgit push -u origin some_other_branch
иgit pull
теперь будет ссылатьсяsome_other_branch
? Спасибо!git push -u origin master
Все необходимые команды git bash для загрузки и загрузки в Github:
Если вы хотите отредактировать файл, то:
Чтобы увидеть все ветви и их коммиты:
источник