Обновление: обратите внимание, что принятый в настоящее время ответ увековечивает распространенное заблуждение о поведении 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в более поздних версиях) - я написал