Что такое " git remote add ... "и" git push origin master"?
довольно часто Git и Rails выглядят как магия... например, в первая глава Rails 3 учебник книга, это говорит о Git:
git remote add origin [email protected]:peter/first_app.git
git push origin master
и он в значительной степени говорит "это просто работает", не говоря слишком много о том, что они есть, и начинают говорить о ветвлении. Поиск в сети показывает, что git remote add добавить "короткое имя", например:origin, и это может быть любое имя, которое похоже на псевдоним URL. И origin это обычный путь, где удаленное РЕПО указывает на. (in http://git-scm.com/book/en/Git-Basics-Working-with-Remotes в разделе "добавление удаленных репозиториев")
так почему же URL не git://[email protected]/peter/first_app.git но в другом синтаксисе -- что это за синтаксис? Почему это должно заканчиваться .git? Я старался не использовать .git в конце концов, и это тоже работает. Если нет .git что еще может быть? Элемент git на [email protected] кажется, учетная запись пользователя на сервере git?
кроме того, почему это должно быть так многословно использовать git push origin master? Не может ли значение по умолчанию быть origin и master? Я обнаружил, что в первый раз,origin master требуется, но после небольшого редактирования и фиксации, то git push - это все, что нужно (не нужно origin master). Может ли кто-нибудь, кто знает, что происходит, дать некоторые детали?
иногда кажется, что много магии без объяснения причин... и иногда человек, использующий его, настолько уверен, и когда его спрашивают, почему, не может объяснить это и ответить чем-то вроде "так оно и есть". Иногда очень практично и прагматично. Неплохо быть практичным, но, вероятно, не практичным до такой степени, чтобы не знать, что происходит.
4 ответов:
gitЭто как UNIX. Удобный, но придирчивый о своих друзьях. Это примерно так же мощно и удобно, как конвейер оболочки.как только вы поймете его парадигмы и концепции, у него будет такая же ясность Дзен, которую я ожидал от инструментов командной строки UNIX. Вы должны подумать о том, чтобы взять некоторое время, чтобы прочитать один из многих хороших учебников git, доступных в интернете. Книга Pro Git - это хорошее место для начала.
чтобы ответить на ваш первый вопрос.
что это
git remote add ...как вы, наверное, знаете,
git- это распределенная система контроля версий. Большинство операций выполняются локально. Чтобы общаться с внешним миром,gitиспользует то, что называетсяremotes. Это репозитории, отличные от того, который находится на вашем локальном диске, который вы можетеpushнастройки (так что другие люди могут видеть их) илиpullот (так что вы можете получить другие изменения). Командаgit remote add origin [email protected]:peter/first_app.gitсоздает новый пульт называетсяoriginрасположенном в[email protected]:peter/first_app.git. Как только вы сделаете это, в ваших командах push, вы можете нажать наoriginвместо того, чтобы печатать весь URL.что это
git push origin masterэто команда, которая говорит: "нажмите фиксации в локальной ветви с именем
masterна пульт с именемorigin". Как только это будет выполнено, все материалы, которые вы в последний раз синхронизировали с origin, будут отправлены в удаленный репозиторий, и другие люди смогут их увидеть там.теперь о перевозках (т. е. что
многословие. Команда, которую вы набрали, является общей. Можно сказать git что-то вроде "ветка называетсяgit://) означает. URL-адреса удаленных репозиториев могут быть разных типов (file://,https://etc.). Git просто полагается на механизм аутентификации, предоставляемый транспортом, чтобы заботиться о разрешениях и прочее. Это означает, что дляfile://URL-адреса, это будут разрешения для файлов UNIX и т. д. Элементgit://scheme просит git использовать свой собственный внутренний транспортный протокол, который оптимизирован для отправки наборов изменений git. Что касается точный URL, это так, как это происходит из-за того, как github настроил егоgitсервер.masterздесь находится локальное зеркало ветви под названиемfooна пульте под названиемbar". В git говорят, это означает, чтоmasterтрассыbar/foo. Когда вы клонируете в первый раз, вы получите ветку под названиемmasterи пульт дистанционного называетсяorigin(откуда вы клонировали) с локальным мастером, установленным для отслеживания мастера в origin. Как только это настроено, вы можете просто сказатьgit pushи он сделает это. Более длинная команда доступна в случае необходимости (например,git pushможет подтолкнуть к официальному публичному РЕПО иgit push review masterможет использоваться для нажатия на отдельный пульт, который ваша команда использует для просмотра кода). Вы можете настроить свою ветвь как ветвь отслеживания, используя на .я чувствовал что Git (в отличие от большинства других приложений, которые я использовал) лучше понимать изнутри. Как только вы поймете, как данные хранятся и поддерживаются в репозитории, команды и то, что они делают, становятся кристально чистыми. Я согласен с вами, что есть некоторый элитизм среди многих
gitпользователи но я также обнаружил, что с пользователями UNIX когда-то, и это стоило пахать мимо них, чтобы узнать систему. Удачи вам!
обновление: обратите внимание, что в настоящее время принято отвечать увековечивает распространенное заблуждение о поведении
git push, который не был исправлен, несмотря на комментарий, указывающий на это.ваше резюме того, что такое пульты дистанционного управления-как псевдоним для URL-адреса репозитория-правильно.
так почему же URL-адрес не git://[email protected]/peter/first_app.git но в другом синтаксисе - что это за синтаксис? Почему это должно закончиться с.ГИТ? Я старался не использовать .git в конце, и это тоже работает. Если нет .ГИТ, что еще это может быть? Git у новичка, похоже, является учетной записью пользователя на сервере git?
два URL, которые вы упомянули, указывают на то, что должны использоваться два разных транспортных протокола. Тот, который начинается с
git://для протокола git, который обычно используется только для доступа только для чтения к репозиториям. Другой,[email protected]:peter/first_app.git, является одним из различных способов указания доступа к a репозиторий по SSH - это "синтаксис scp-стиля", описанный в документация. Что имя пользователя в синтаксисе scp-стиляgitиз - за того, как GitHub имеет дело с идентификацией пользователей-по существу, это имя пользователя игнорируется, и пользователь идентифицируется на основе пары ключей SSH, которую они использовали для аутентификации.Что касается многословия
git push origin master, вы заметили, что после первого толчка, то вы можете просто сделатьgit push. Это происходит из-за серия трудных для запоминания, но в целом полезных значений по умолчанию:)
- если пульт не указан, то он настроен для текущей ветви (в
remote.master.urlв вашем случае) используется. Если это не настроено, то это.- если нет "refspec" (например,
master,master:my-experimentи т. д.) указано, затем git по умолчанию нажимает каждую локальную ветвь, которая имеет то же имя, что и ветвь на удаленном устройстве. Если у вас просто есть ветка под названиемmasterобщего между репозиторий и удаленный, это будет то же самое, что нажать вашmasterна пультmaster.лично, поскольку у меня, как правило, есть много тематических ветвей (и часто несколько пультов), я всегда использую форму:
git push origin master... чтобы случайно не толкать другие ветки.
в ответ на ваши комментарии по одному из других ответов, Мне кажется, что are изучение git сверху вниз очень эффективно - вы обнаружили, что по умолчанию работают, и ваш вопрос спрашивает о том, почему ;) чтобы быть более серьезным, git можете используется по существу так же просто, как SVN, но немного зная о пультах дистанционного управления и филиалах, вы можете использовать его гораздо более гибко, и это действительно может изменить способ работы к лучшему. Ваше замечание о семестровом курсе заставляет меня думать о чем-то, что сказал Скотт Чакон в интервью подкаста-студентов учат всем видам основных инструментов в области компьютерных наук и разработка программного обеспечения, но очень редко контроль версий. Распределенные системы управления версиями, такие как git и Mercurial, теперь настолько важны и настолько гибки, что стоило бы преподавать курсы по ним, чтобы дать людям хорошее заземление.
я считаю, что с
git, эта кривая обучения абсолютно стоит того-работа с большим количеством тематических ветвей, легко объединяя их, а также подталкивая и вытягивая их между различными репозиториями фантастически полезна, как только вы станете уверен в системе. Это просто прискорбно, что:
- первичная документация для git так трудно разобрать для новичков. (Хотя я бы сказал, что если Вы Google для почти любого вопроса git, полезные учебные материалы (или ответы на переполнение стека :)) появляются в наши дни.)
- в git есть несколько странных поведений, которые трудно изменить сейчас, потому что многие сценарии могут полагаться на них, но сбивают с толку людей.
The
.gitв конце имя репозитория-это просто соглашение. Как правило, на Git серверах репозитории хранятся в каталогах с именемproject.git. Клиент git и протокол соблюдают эту конвенцию путем тестирования наproject.gitесли только - это.
git://[email protected]/peter/first_app.gitне является допустимым git url. репозитории git могут быть идентифицированы и доступны через различные схемы url, указанные здесь.[email protected]:peter/first_app.git- этоsshURL-адрес упоминается на этой странице.
gitгибкий. Это позволяет отслеживать локальную ветвь практически против любой ветви любого репозитория. В то время какmaster(ваша локальная ветвь по умолчанию) отслеживаниеorigin/master(удаленная ветвь по умолчанию) - популярная ситуация, она не универсальна. Много раз вы можете не захотеть этого делать. Вот почему первыйgit pushтак многословно. Он говорит git, что делать с местнымmasterфилиал, Когда вы делаетеgit pullили agit push.по умолчанию
git pushиgit pullдля работы с пультом дистанционного управления текущего филиала. Это лучше по умолчанию, чем origin master. То, как git push определяет это, объясняется здесь.
gitдовольно элегантный и понятный, но есть кривая обучения, чтобы пройти.
git remote add origin:
Он централизует ваш исходный код на другой projects.It разработан на базе Linux, полностью открытым исходным кодом и сделать ваш код полезным для других пользователей git.мы называем это ссылкой
помещает ваш код в репозиторий git с помощью удаленного url-адреса концентратора git.
Comments