Обновление: обратите внимание, что принятый в настоящее время ответ увековечивает распространенное заблуждение о поведении git push
, которое не было исправлено, несмотря на комментарий, указывающий на это.
Ваше краткое изложение того, что такое пульты - например, псевдоним для URL хранилища - является правильным.
Так почему URL-адрес не git: //git@github.com/peter/first_app.git, а в другом синтаксисе - какой это синтаксис? Почему это должно заканчиваться на .git? Я пытался не использовать .git в конце, и это тоже работает. Если нет .git, что еще это может быть? Git у новичка кажется учетной записью пользователя на сервере Git?
Два URL-адреса, которые вы упомянули, указывают, что следует использовать два разных транспортных протокола. Первый начинается с git://
протокола git, который обычно используется только для доступа к репозиториям только для чтения. Другой git@github.com:peter/first_app.git
способ - это один из различных способов указания доступа к хранилищу по SSH - это «синтаксис в стиле scp», описанный в документации . То, что имя пользователя в синтаксисе в стиле scp git
является следствием того, что GitHub имеет дело с идентификацией пользователей - по сути, это имя пользователя игнорируется, и пользователь идентифицируется на основе пары ключей SSH, которую они использовали для аутентификации.
Что касается многословия git push origin master
, вы заметили, что после первого нажатия вы можете просто сделать git push
. Это из-за серии трудных для запоминания, но в целом полезных значений по умолчанию :)
- Если пульт не указан, используется пульт, настроенный для текущей ветви (
remote.master.url
в вашем случае). Если это не настроено, то origin
используется.
- Если «refspec» (например
master
, master:my-experiment
и т. Д.) Не указан, то git по умолчанию отправляет каждую локальную ветвь с тем же именем, что и ветка на удаленном компьютере. Если у вас просто есть ветка, вызываемая master
между вашим репозиторием и удаленной, это будет то же самое, что и ваша ветка master
на удаленную master
.
Лично, поскольку у меня, как правило, много веток тем (и часто несколько удаленных), я всегда использую форму:
git push origin master
... чтобы случайно не толкнуть другие ветви.
В ответ на ваши комментарии на одном из других ответов, это звучит для меня , как будто будут очень эффективно узнавать о мерзавце в нисходящем пути - вы обнаружили , что по умолчанию работает, и ваш вопрос спрашивает о том, почему;) To будь серьезнее, мерзавец можетиспользовать его по сути так же просто, как SVN, но, зная немного о пультах и ветвях, вы можете использовать его гораздо гибче, и это может реально изменить вашу работу к лучшему. Ваше замечание по поводу семестрового курса заставляет меня думать о том, что Скотт Чакон сказал в интервью подкаста: студентов учат всем видам базовых инструментов в области компьютерных наук и разработки программного обеспечения, но очень редко - контролю версий. Распределенные системы контроля версий, такие как git и Mercurial, теперь настолько важны и настолько гибки, что стоило бы проводить курсы по ним, чтобы дать людям хорошее основание.
С моей точки зрения git
, эта кривая обучения абсолютно стоит того - работать с множеством веток тем, легко объединять их, а также перемещать и перемещать их между различными репозиториями, становится фантастически полезным, как только вы становитесь уверенными в системе. Просто жаль, что:
- Первичную документацию по git так сложно разобрать новичкам. (Хотя я бы поспорил, что если вы используете Google практически для любого git-вопроса, в настоящее время подойдет полезный учебный материал (или ответы Stack Overflow :)).)
- В git есть несколько странных поведений, которые трудно изменить сейчас, потому что многие скрипты могут полагаться на них, но они вводят людей в заблуждение.
git@github.com:peter/first_app.git
этоscp
синтаксис -style для URL-адресов ssh в git. Еще один момент заключается в том, что по умолчанию исходная конфигурацияmaster
не влияет на поведение,git push
если вы неpush.default
установилиtracking
(илиupstream
в более поздних версиях) - я написал