нужно пояснить, как работает команда "git push" - PullRequest
2 голосов
/ 06 ноября 2011

Я пытался развернуть свой исходный код на Github. Затем я сначала добавил источник github в удаленный источник следующим образом:

$ git remote add origin git@github.com:user_name/foo_bar.git*

Затем я попытался запустить команду "git push", чтобы загрузить свой исходный код в мою удаленную учетную запись github, как показано ниже.

$ git push

Enter passphrase for key '/c/Users/mylaptop/.ssh/id_rsa':
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@github.com:user_name/foo_bar.git'

Как я узнал от railstutorial.org, я знаю, что если я использую "git push" в первый раз, он выдаст ошибку, ожидающую, что я укажу параметры 'master master'. Но в следующий и более поздние времена я могу только запустить «git push», он будет работать изящно для меня. В чем причина этого? как я и думал, команда по умолчанию всегда ссылается на ветку master.

Любое четкое объяснение будет очень признательно.

Ответы [ 3 ]

5 голосов
/ 06 ноября 2011

В первый раз, когда вы делаете git push, не существует удаленной ветви с именем master на источнике.

После того, как ветка существует, вы можете использовать git push, и она свяжется с удаленной веткой с той же веткой.название филиала, в котором вы сейчас находитесь.

1 голос
/ 06 ноября 2011

Поведение по умолчанию git push origin - отправка на origin всех локальных ветвей с тем же именем, что и у ветви на origin.

Если вы введете git push без указания origin, имя целевого репозитория будет выведено из удаленной ветви, отслеживаемой филиалом, в котором вы находитесь. Так что, если вы находитесь на ветке master, отслеживание origin/master, git push похоже на git push origin.

1 голос
/ 06 ноября 2011

Git-репозитории имеют эту концепцию «отслеживания».Таким образом, с точки зрения git, он может знать, что основная ветвь отслеживает источник / master.Если он видит эти отношения, когда вы делаете git push, тогда он говорит: «О, хорошо, он отталкивается от мастера, который отслеживает происхождение / мастер. Это должно быть именно там, где он хочет, чтобы это произошло».до вашего первого нажатия - git не знает об этих отношениях, что означает, что ваша команда (потенциально) неоднозначна.Вы можете прочитать официальную документацию об этом поведении в главе Git Book по отслеживанию .

Примечание: См. Комментарий Jefromi ниже.Он указывает на некоторые неточности в моем объяснении, которые могут быть важны, в зависимости от вашего варианта использования.

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