Как клонировать нужную ветку git
Основы Git за 5 минут
По мере своего становления в роли разработчика приходит понимание того, что большая часть работы ведется в команде. И при работе в команде нужна система контроля версий, которая поможет управлять изменениями в коде, сделанными разными разработчиками.
Git — это одна из самых популярных систем контроля версий. И, тем не менее, она повергает новичков-разработчиков в шок — поверьте на слово, сам прошел через это. К слову сказать, я побаивался Git на протяжении нескольких лет.
Если вы опытный разработчик и не дрожите от одного упоминания Git, то смело закрывайте эту статью и выбирайте что-то потруднее. Но если вы новичок в Git или не уверены в своих знаниях, то посвятите пару минут своего времени изучению основных, но весьма важных, аспектов Git.
Вот о чем поговорим:
Git clone
Всегда клонируйте новые репозитории, над которыми работаете. То есть, закачивайте копии файлов репозитория на свой локальный компьютер. Существует множество способов клонирования репозитория. Однако я объясню технологию на примере командной строки.
Для клонирования определенной ветки репозитория сделайте следующее:
Git checkout
В процессе работы возникает необходимость перехода в отдельную ветку репозитория. Это можно сделать следующей командой.
Если ветка уже создана:
git checkout branch-name
Если вы создаете новую ветку опций:
Git pull
Git add и commit
После создания снимков репозитория их нужно закоммитить и сохранить в локальный репозиторий. Это делается через следующую команду:
Сообщение в коммите должно пояснить специфику сохраняемых снимков. Например:
Две команды можно объединить через оператор && :
Git stash и merge
git merge – это команда, которая сливает два разных снимка репозитория. Вы можете сливать разные снимки изменений одной и той же ветви, сделанные разными разработчиками. Либо же можно сливать разные снимки разных веток.
При переходе в ветку master команда git merge сливает ветку dev с master и наоборот.
Git push
По аналогии с тем, как вы сохраняете снимки в Google Фото, и их видят другие люди, имеющие доступ, git push отправляет локальный репозиторий на сервер, доступный другим пользователям.
Как клонировать одну ветвь в Git?
у меня есть локальный репозиторий Git под названием «скелет», который я использую для хранения скелетов проектов. Он имеет несколько филиалов, для различных видов проектов:
если я хочу проверить главную ветку для нового проекта, я могу сделать
и все так, как я хочу. В частности, новая главная ветвь указывает на главную ветвь скелета, и я могу нажимать и тянуть, чтобы переместить изменения в базовую настройку проекта.
что не работает, однако, если я хочу клонировать другую ветку. Я не могу получить его так, что я только тяну ветку, которую хочу, например rails филиала, а затем новый репозиторий имеет master ветка, которая толкает и тянет из хранилища скелета rails филиала, по умолчанию.
есть ли хороший способ сделать это? Или, может быть, это не то, как Git хочет, чтобы я структурировал вещи, и я, конечно, открыт для этого. Возможно, у меня должно быть несколько репозиториев, с Ruby on Rails репозиторий скелет отслеживания мастер скелет репозиторий? И любой индивидуальный проект, клонирующий хранилище скелетов Ruby on Rails.
14 ответов
Примечание:git1.7.10 (апрель 2012 года) на самом деле позволяет клонировать только одну ветку:
вы можете увидеть его в t5500-fetch-pack.sh :
один из способов-выполнить следующее.
преимущество такого подхода заключается в том, что последующие git pull (или git fetch ) вызовы также будут просто загружать запрошенную ветку.
вы можете попробовать длинный путь:
надеюсь, что будет что-то вроде того, что вам нужно.
вы можете сделать это, используя следующую команду:
всегда помните, чтобы делать Ctrl + Ф5 для чтения свежего источника, а не из кэша 🙂 (Я не так давно не знал об этом варианте.)
Как клонировать отдельную ветку в Git?
У меня есть локальный репозиторий Git под названием «скелет», который я использую для хранения скелетов проектов. У него есть несколько веток для разных проектов:
Если я хочу проверить основную ветку для нового проекта, я могу сделать
И все так, как я хочу. В частности, новая главная ветвь указывает на основную ветвь скелета, и я могу нажимать и тянуть, чтобы перемещать изменения в базовой настройке проекта.
Есть ли хороший способ сделать это? Или, может быть, Git не хочет, чтобы я структурировал вещи таким образом, и я определенно открыт для этого. Возможно, мне следует иметь несколько репозиториев, при этом репозиторий скелетов Ruby on Rails отслеживает главный репозиторий скелетов? И любой отдельный проект, клонирующий скелетный репозиторий Ruby on Rails.
22 ответа
Примечание. git1.7.10 (апрель 2012 г.) фактически позволяет вам клонировать только одну ветку :
Вы можете увидеть это в t5500-fetch-pack.sh :
«Отмена» мелкого клона подробно описана в разделе «Преобразовать мелкий клон в полный клон» (git 1.8.3+)
Подписано: Эмили Шаффер
Актер: Джефф Кинг
Обновить
Теперь, начиная с Git 1.7.10, вы можете сделать это
Преимущество этого подхода заключается в том, что последующие вызовы git pull (или git fetch ) также просто загрузят запрошенную ветвь.
Вы можете попробовать длинный способ:
Надеюсь, это будет что-то вроде того, что вам нужно.
Вы можете сделать это с помощью следующей команды:
Клонировать только одну ветку. Это самый простой способ:
Для клонирования конкретной ветки вы можете:
Здесь есть достаточно ответов, в которых упоминается:
. или какая-то его версия, а также некоторые, в которых упоминается только:
Предположим, у вас есть удаленное репо на GitHub по адресу https://github.com/micronucleus/micronucleus.git с удаленными ветвями master и version_2.5 (это реальный пример, который вы можете запустить прямо сейчас).
Разбивка 2-й команды сверху:
Разбивка 1-й команды сверху:
Эта команда действительно клонирована и получит только ту ветку, которую мы хотели, и все!
Резюме:
Как клонировать все удаленные ветви в Git?
у меня есть master и development бранч, оба нажаты на GitHub. Я clone d, pull Эд, и fetch ЭД, но я по-прежнему не могу получить ничего, кроме master ветку обратно.
Я уверен, что упускаю что-то очевидное, но я прочитал руководство, и я не получаю никакой радости.
30 ответов
во-первых, клонировать удаленный Git хранилище и компакт-диск в:
Далее, посмотрите на локальные ветви в вашем репозитории:
если вы просто хотите быстро взглянуть на ветку вверх по течению, вы можете проверить это напрямую:
а если вы хотите работать над этим филиал, вам нужно будет создать локальную ветку отслеживания, которая выполняется автоматически:
теперь, если вы посмотрите на свои местные филиалы, вот что вы увидите:
в этот момент все становится довольно сумасшедшим, так что бегите gitk чтобы увидеть, что происходит:
Если у вас есть много удаленных ветвей, которые вы хотите получить сразу, сделайте:
теперь вы можете проверить любую ветку, как вам нужно, не нажимая на удаленный репозиторий.
этой Баш скрипт выручил меня:
он создаст ветви отслеживания для всех удаленных ветвей, кроме master (который вы, вероятно, получили от оригинальной команды clone). Я думаю, вам все еще нужно сделать
чтобы быть уверенным.
кредиты для one-liner перейти к пользователю cfi
вы можете легко переключиться на ветку, не используя причудливый синтаксис» git checkout-b somebranch origin/somebranch». Вы можете просто сделать:
Git автоматически сделает правильную вещь:
Git проверит, существует ли ветвь с тем же именем ровно в одном удаленном, и если это так, она отслеживает его так же, как если бы вы явно указали, что это удаленная ветвь. Из справочной страницы git-checkout git 1.8.2.1:
Если не найдена, но существует ветвь отслеживания в ровно один удаленный (назовите его ) с соответствующим именем, обработайте как эквивалентно
$ git checkout-b экспериментальное происхождение / экспериментальное
или более подробный, но легче запомнить
может быть лучше, с точки зрения отслеживания удаленного репозитория.
выборка, которую вы делаете, должна получить все удаленные ветви, но она не будет создавать локальные ветви для них. Если вы используете gitk, вы должны увидеть удаленные ветви, описанные как «remotes/origin/dev» или что-то подобное.
чтобы создать локальную ветвь на основе удаленной ветви, сделайте что-то вроде:
который должен вернуть что-то вроде:
когда вы делаете «git clone git: / / location», все ветви и теги извлекаются.
для работы поверх определенной удаленной ветви, предполагая, что это исходный удаленный:
использовать псевдонимы. Хотя нет никаких родных однострочных Git, вы можете определить свой собственный как
а затем используйте его как
Это не слишком сложно, очень простые и прямые шаги вперед следующие;
git fetch origin это приведет все удаленные ветви к вашему локальному.
Проверьте, находитесь ли вы в нужной ветке с помощью следующей команды;
результат будет такой;
обратите внимание на знак*, который обозначает текущий отделение.
почему вы видите только «мастер»
git clone загружает все удаленные удаленные ветви, но по-прежнему считает их «удаленными», даже если файлы находятся в Вашем новом репозитории. Есть одно исключение из этого, которое заключается в том, что процесс клонирования создает локальную ветвь под названием «master» из удаленной ветви под названием «master». По умолчанию git branch показывает только локальные ветви, поэтому вы видите только «master».
как получить местные отделения
если вы действительно хотите работать над филиалом, вам, вероятно, понадобится его «локальная» версия. Чтобы просто создать локальные ветви из удаленных ветвей (не проверяя их и тем самым изменяя содержимое вашего рабочего каталога), вы можете сделать это так:
лучше поздно, чем никогда, но вот лучший способ сделать это:
просто сделать это:
вы видите, ‘ git clone git: / / пример.com / myprojectt’ получает все, даже ветви, вам просто нужно их проверить, затем будет создана ваша локальная ветвь.
вам нужно только использовать «git clone», чтобы получить все ветви.
хотя вы видите только главную ветвь, вы можете использовать «git branch-a», чтобы увидеть все ветви.
и вы можете переключиться на любую ветку, которая у вас уже есть.
не волнуйтесь, что после того, как вы» git clone», вам не нужно подключаться к удаленному РЕПО,» git branch-a «и» git checkout » могут быть успешно запущены при закрытии wifi. Таким образом, доказано, что, когда вы делаете «git clone», он уже скопировал все ветви из удаленного РЕПО. После этого вам не нужно удаленное РЕПО, у вашего локального уже есть коды всех филиалов.
использовать мой инструмент git_remote_branch (вам нужно установить Ruby на ваш компьютер). Он построен специально для того, чтобы сделать дистанционные манипуляции с ветвями очень легкими.
Если вы не хотите, чтобы grb выполнял команды от вашего имени, просто используйте функцию «объяснить». Команды будут напечатаны на вашей консоли, а не выполнены для вы.
наконец, все команды имеют псевдонимы, чтобы облегчить запоминание.
вот справка при запуске справки grb:
все ответы, которые я видел здесь, действительны, но есть гораздо более чистый способ клонировать репозиторий и вытащить все ветви сразу.
когда вы клонируете репозиторий, вся информация о ветвях фактически загружается, но ветви скрыты. С командой
вы можете показать все ветки репозитория, и с помощью команды
затем вы можете «загрузить» их вручную по одному за раз.
однако, когда вы хотите клонировать РЕПО с большим количеством ветвей, все способы, иллюстрированные выше, длинны и утомительны в отношении гораздо более чистого и быстрого способа, который я собираюсь показать, хотя это немного сложно. Для этого нужно сделать три шага:—6—>
переключите этот репозиторий из пустого (голого) репозитория в обычный репозиторий, переключив логическое значение «голый» конфигураций git на false:
возьмите все, что внутри текущая папка и создайте все ветви на локальном компьютере, поэтому сделайте это обычным РЕПО.
теперь вы можете просто ввести команду «git branch», и вы увидите, что все ветви загружены.
это быстрый способ, которым вы можете клонировать репозиторий git со всеми ветвями сразу, но это не то, что вы хотите сделать для каждого отдельного проекта таким образом.
глядя на один из ответов на вопрос, я заметил, что его можно сократить:
но будьте осторожны, если одна из удаленных ветвей называется, например, admin_master, она не будет загружена!
спасибо bigfish за оригинальную идею
ОК когда вы клонируете свое РЕПО,у вас есть все ветви.
если вы просто оформить заказ в филиал, вы получите все, что вам нужно.
но как насчет того, если ветка, созданная кем-то еще после клонирования?
в этом случае, просто do:
и проверьте все ветви снова.
если вы хотите получить и оформить заказ в то же время, вы можете сделать:
git fetch && git checkout your_branch_name
также создал изображение ниже для вас, чтобы упростить то, что я сказал:
для копирования-вставки в командную строку:
для большей удобочитаемости:
этот код вытянет весь код удаленных филиалов в локальное РЕПО.
клонирование из локального РЕПО не будет работать с git clone & git fetch: многие ветви / теги останутся незамеченными.
чтобы получить клон со всеми ветвями и тегами.
чтобы получить клон со всеми ветвями и тегами, но также и с рабочей копией:
Мне нужно было сделать то же самое. Вот мой Рубин сценарий.
Клонирование конкретной ветки
Я новичок в git control version и не знаю, как клонировать /вытянуть определенную ветку репо. Попытка получить ветку master проекта, но по умолчанию она ветвится test_1
Как мне клонировать основную ветвь этого проекта, чтобы я мог вносить изменения и выдвигать ее?
5 ответов
Вы будете клонировать репо с определенного момента времени и только для данной ветви
— [нет-] одной ветви
— глубина
Создать неглубокий клон с историей, усеченной до указанного количества коммитов
вы можете использовать эту команду для конкретного клона ветви:
Я не думаю, что вы полностью понимаете, как git по умолчанию предоставляет вам всю историю всех ветвей.
репозиторий git имеет несколько веток. Каждая ветвь следует за линией разработки и имеет свое происхождение в другой ветке в определенный момент времени (за исключением первой ветки, обычно называемой master то, что она начинается как ветка по умолчанию, пока кто-то не изменится, чего почти не происходит)
В некоторых случаях вы хотите получать обновления для конкретной ветки. Просто выполните git pull origin
, и он «загрузит» новые коммиты (изменения). Если вы не сделали никаких изменений, все должно пройти легко. Если вы также внесли изменения в эти ветви, могут возникнуть конфликты. дайте мне знать, если вам нужна дополнительная информация по этому делу также
Чтобы клонировать определенную ветку в репозитории git