Что такое " 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). Может ли кто-нибудь, кто знает, что происходит, дать некоторые детали?



иногда кажется, что много магии без объяснения причин... и иногда человек, использующий его, настолько уверен, и когда его спрашивают, почему, не может объяснить это и ответить чем-то вроде "так оно и есть". Иногда очень практично и прагматично. Неплохо быть практичным, но, вероятно, не практичным до такой степени, чтобы не знать, что происходит.

1423   4  

4 ответов:

git Это как UNIX. Удобный, но придирчивый о своих друзьях. Это примерно так же мощно и удобно, как конвейер оболочки.

как только вы поймете его парадигмы и концепции, у него будет такая же ясность Дзен, которую я ожидал от инструментов командной строки UNIX. Вы должны подумать о том, чтобы взять некоторое время, чтобы прочитать один из многих хороших учебников git, доступных в интернете. Книга Pro Git - это хорошее место для начала.

чтобы ответить на ваш первый вопрос.

  1. что это 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.

  2. что это git push origin master

    это команда, которая говорит: "нажмите фиксации в локальной ветви с именем master на пульт с именем origin". Как только это будет выполнено, все материалы, которые вы в последний раз синхронизировали с origin, будут отправлены в удаленный репозиторий, и другие люди смогут их увидеть там.

теперь о перевозках (т. е. что git://) означает. URL-адреса удаленных репозиториев могут быть разных типов (file://,https:// etc.). Git просто полагается на механизм аутентификации, предоставляемый транспортом, чтобы заботиться о разрешениях и прочее. Это означает, что для file:// URL-адреса, это будут разрешения для файлов UNIX и т. д. Элемент git:// scheme просит git использовать свой собственный внутренний транспортный протокол, который оптимизирован для отправки наборов изменений git. Что касается точный URL, это так, как это происходит из-за того, как github настроил его git сервер.

многословие. Команда, которую вы набрали, является общей. Можно сказать 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 есть несколько странных поведений, которые трудно изменить сейчас, потому что многие сценарии могут полагаться на них, но сбивают с толку людей.
  1. The .git в конце имя репозитория-это просто соглашение. Как правило, на Git серверах репозитории хранятся в каталогах с именем project.git. Клиент git и протокол соблюдают эту конвенцию путем тестирования на project.git если только - это.

  2. git://[email protected]/peter/first_app.git не является допустимым git url. репозитории git могут быть идентифицированы и доступны через различные схемы url, указанные здесь. [email protected]:peter/first_app.git - это ssh URL-адрес упоминается на этой странице.

  3. git гибкий. Это позволяет отслеживать локальную ветвь практически против любой ветви любого репозитория. В то время как master (ваша локальная ветвь по умолчанию) отслеживание origin/master (удаленная ветвь по умолчанию) - популярная ситуация, она не универсальна. Много раз вы можете не захотеть этого делать. Вот почему первый git push так многословно. Он говорит git, что делать с местным master филиал, Когда вы делаете git pull или a git push.

  4. по умолчанию git push и git pull для работы с пультом дистанционного управления текущего филиала. Это лучше по умолчанию, чем origin master. То, как git push определяет это, объясняется здесь.

git довольно элегантный и понятный, но есть кривая обучения, чтобы пройти.

git remote add origin:

Он централизует ваш исходный код на другой projects.It разработан на базе Linux, полностью открытым исходным кодом и сделать ваш код полезным для других пользователей git.мы называем это ссылкой

помещает ваш код в репозиторий git с помощью удаленного url-адреса концентратора git.

Comments

    Ничего не найдено.