Главная » Звезды » Git скачать ветку из репозитория. Git branch. Создаем, переключаемся, стягиваем. Отображение удалённых репозиториев

Git скачать ветку из репозитория. Git branch. Создаем, переключаемся, стягиваем. Отображение удалённых репозиториев

Чтобы иметь возможность совместной работы над каким-либо Git-проектом, необходимо знать, как управлять удалёнными репозиториями. Удалённые репозитории — это модификации проекта, которые хранятся в интернете или ещё где-то в сети. Их может быть несколько, каждый из которых, как правило, доступен для вас либо только на чтение, либо на чтение и запись. Совместная работа включает в себя управление удалёнными репозиториями и помещение (push ) и получение (pull ) данных в и из них тогда, когда нужно обменяться результатами работы. Управление удалёнными репозиториями включает умение добавлять удалённые репозитории, удалять те из них, которые больше не действуют, умение управлять различными удалёнными ветками и определять их как отслеживаемые (tracked) или нет и прочее. Данный раздел охватывает все перечисленные навыки по управлению удалёнными репозиториями.

Чтобы разобрать примеры этой главы я создал удаленный репозитарий TestRemote на GitHub, а затем склонировал его себе.

Отображение удалённых репозиториев

Чтобы просмотреть, какие удалённые серверы у вас уже настроены, следует выполнить команду git remote . Она перечисляет список имён-сокращений для всех уже указанных удалённых дескрипторов. Если вы склонировали ваш репозиторий, у вас должен отобразиться, по крайней мере, origin — это имя по умолчанию, которое Git присваивает серверу, с которого вы склонировали:

Чтобы посмотреть, какому URL соответствует сокращённое имя в Git, можно указать команде опцию -v :

Добавление удалённых репозиториев

Чтобы добавить новый удалённый Git-репозиторий под именем-сокращением, к которому будет проще обращаться, выполните git remote add [сокращение] :

Теперь вы можете использовать в командной строке имя tr вместо полного URL.

Например, я сделал некоторые изменения файла README.md и теперь загрузим их себе в локальный репозиторий командой git fetch :

Теперь ветка изменений с сервера доступна локально как tr/mater. Вы можете слить (merge) её в одну из своих веток или перейти на эту ветку, если хотите её проверить.

Тут надо отметить, что между командами git pull и git fetch есть разница, но об этом чуть позже.

На данный момент, если мы посмотрим содержимое файла README.md в рабочем каталоге, то оно будет точно такое же, как было до команды git fetch. Это потому, что мы в данный момент находимся в ветке master локального репозитария, которая не была изменена.

Чтобы посмотреть все существующие ветки можно дать команду git branch с ключом –a , который покажет все ветки репозитория.

Здесь активная ветка обозначена звёздочкой. А так же мы видим ветку которую мы притянули командой git fetch – это ветка remotes/tr/master. Собственно об этом нам команда git fetch и сообщила после выполнения.

Переключится на ветку можно командой git checkout <имя ветки>

И так мы переключились на ветку которую стянули командой git fetch, о чем нам выдалось сообщение и рассказали какие файлы были обновлены. Это файл README.md. Теперь в рабочем каталоге мы можем посмотреть измененное содержимое этого файла (мы его меняли непосредственно на GitHub).

Мы так же можем переключится обратно на нашу ветку master

Теперь будем разбираться с разницей между fetch и pull .

Fetch и Pull

Как вы только что узнали, для получения данных из удалённых проектов, следует выполнить:

$ git fetch [имя удал. сервера]

Данная команда связывается с указанным удалённым проектом и забирает все те данные проекта, которых у вас ещё нет . После того как вы выполнили команду, у вас должны появиться ссылки на все ветки из этого удалённого проекта. Теперь эти ветки в любой момент могут быть просмотрены или слиты (объединены).

Когда вы клонируете репозиторий, команда clone автоматически добавляет этот удалённый репозиторий под именем origin . Таким образом, git fetch origin извлекает все наработки, отправленные (push ) на этот сервер после того, как вы склонировали его (или получили изменения с помощью fetch ) . Важно отметить, что команда fetch забирает данные в ваш локальный репозиторий, но не сливает (не объединяет) их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент . Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы.

Если у вас есть ветка, настроенная на отслеживание удалённой ветки, то вы можете использовать команду git pull . Она автоматически извлекает и затем сливает (объединяет) данные из удалённой ветки в вашу текущую ветку . Этот способ может для вас оказаться более простым или более удобным. К тому же по умолчанию команда git clone автоматически настраивает вашу локальную ветку master на отслеживание удалённой ветки master на сервере , с которого вы клонировали (подразумевается, что на удалённом сервере есть ветка master). Выполнение git pull , как правило, извлекает (fetch ) данные с сервера , с которого вы изначально склонировали, и автоматически пытается слить (объеденить) (merge ) их с кодом, над которым вы в данный момент работаете .

$ git push origin master

Эта команда срабатывает только в случае, если вы клонировали с сервера, на котором у вас есть права на запись, и если никто другой с тех пор не выполнял команду push . Если вы и кто-то ещё одновременно клонируете, затем он выполняет команду push , а затем команду push выполняете вы, то ваш push точно будет отклонён. Вам придётся сначала вытянуть (pull ) их изменения и объединить с вашими. Только после этого вам будет позволено выполнить push .

Я выполнил команды pull и объединил изменения для файла README.md и затем залил их на сервер GitHub. Скрин привожу просто для информации чтобы было видно как это делается.

Более подробно как отправлять (push ) данные на удалённый сервер мы рассмотрим чуть позже.

Инспекция удалённого репозитория

Если хотите получить побольше информации об одном из удалённых репозиториев, вы можете использовать команду git remote show [удал. сервер] . Если вы выполните эту команду с некоторым именем, например, origin, вы получите что-то подобное:

Она выдаёт URL удалённого репозитория, а также информацию об отслеживаемых ветках. Эта команда любезно сообщает вам, что если вы, находясь на ветке master , выполните git pull , ветка master с удалённого сервера будет автоматически влита в вашу сразу после получения всех необходимых данных . Она также выдаёт список всех полученных ею ссылок.

Данная команда так же показывает какая именно локальная ветка будет отправлена на удалённый сервер по умолчанию при выполнении git push . Она также показывает, каких веток с удалённого сервера у вас ещё нет, какие ветки всё ещё есть у вас, но уже удалены на сервере.

Удаление и переименование удалённых репозиториев

Для переименования ссылок в новых версиях Git"а можно вылолнить git remote rename , это изменит сокращённое имя, используемое для удалённого репозитория. Например, если вы хотите переименовать tr в tstrmt, вы можете сделать это следующим образом:

Стоит упомянуть, что это также меняет для вас имена удалённых веток. То, к чему вы обращались как tr/master, стало tstrmt/master.

Если по какой-то причине вы хотите удалить ссылку (вы сменили сервер или больше не используете определённое зеркало, или, возможно, контрибьютор перестал быть активным), вы можете использовать git remote rm :

Я клонировал его в локальную копию, используя Eclipse EGit.

Затем я создал ветвь в исходном репозитории git на сервере.

Как скопировать ветку в мою локальную копию с помощью Eclipse EGit?

Когда я открываю Git Repositories внутри EGit, я вижу:

Local -- master - Remote Tracking -- origin/development -- origin/master

Как я могу получить происхождение / развитие в моем местном использовании с помощью EGit?

Я знаю, что могу создать новый клон, но я не хочу этого делать, поскольку считаю, что должен быть способ получить только новую ветку.

Второй вопрос – где команда pull внутри EGit? Мне удалось найти команду fetch, но когда я запустил ее, она говорит, что ничего не нужно. RefSpec:

Refs/heads/*:refs/remotes/origin/*

Третий вопрос – есть ли способ обработать команды git из командной строки внутри Eclipse в моей системе Windows? Я думал о попытке сделать вывод из командной строки, но я не могу найти его в своей локальной системе.

Ваша выборка обновлена, потому что у вас уже есть все, скопированные в локальный репозиторий. Притяжение объединит origin/development в мастера, чего вы не хотите. Вы хотите создать новую ветку с origin/development в качестве отправной точки. Я не знаю, как это сделать с помощью egit, но в командной строке вы выполните:

Git checkout -b development origin/development

Я также искал несколько часов, чтобы узнать, как получить удаленную ветвь в Eclipse EGit …

Решение изложено в этом Bugreport . И это очень просто, если вы знаете, как это сделать – не нужно использовать версию командной строки git, которая, даже если она работает в 99% всех случаев, может быть рискованной, поскольку у меня уже были проблемы, которые она мешала Eclipse и EGit.

Просто выполните следующие действия:

  1. Сначала убедитесь, что вы открыли представление EGit Repository view . Если вы еще не открыли его, перейдите в «Window → Show View → Other …» и оттуда выберите «Git → Git Repositories».
  2. В представлении « Repository view выберите «Филиалы → Удаленное отслеживание». Вы должны увидеть там свои удаленные ветви (пример: origin/new_feature).
  3. Щелкните правой кнопкой мыши на удаленной ветке, которую вы хотите иметь с локальными ветвями. Выберите «Создать ветвь» …
  4. Значения по умолчанию должны быть в порядке. Обычно вы ничего здесь не должны менять. Обратите внимание, что вы не должны изменять стратегию «Потянуть» на что-то другое, чем «Объединить», если вы не знаете, что делаете. В противном случае вытягивание изменений в восходящем потоке может привести к потере данных.
  5. Нажмите «ОК», и вы закончите 🙂

Я столкнулся с той же проблемой, и вот как я ее решил:

    Open Git Perspective

    Сначала у вас должна быть ветка, которую вы хотите проверить, в вашем репозитории под удаленным отслеживанием . Моя проблема заключалась в том, что я не мог видеть удаленную ветку здесь, поэтому, чтобы решить эту проблему – выполните Pull on the repository, и эта команда должна предоставить вам все ветки под удаленным отслеживанием

  1. щелкните правой кнопкой мыши (удаленный) Branch, Check Out, проверьте как новое локальное ветвь


Как загрузить ветку с git? (4)

У меня есть проект на GitHub. Я создал ветку на одном компьютере, а затем переместил мои изменения в github с помощью

Git push origin branch-name

Теперь я на другом компьютере, и я хочу загрузить эту ветку. Поэтому я попробовал:

Git pull origin branch-name

Но все это означало переписывание моей ветви мастера изменениями в моей новой ветке.

Что мне нужно сделать, чтобы правильно потянуть мою удаленную ветку?

Git clone и cd в имени репо:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git Cloning into "iOS-AppleWach"... $ cd iOS-AppleWach

Перейдите на ветку (страница GitHub), которую я хочу:

$ git checkout -b gh-pages origin/gh-pages Branch gh-pages set up to track remote branch gh-pages from origin. Switched to a new branch "gh-pages"

И потяните ветку:

$ git pull Already up-to-date.

$ ls index.html params.json stylesheets

$ git clone https://github.com/lukeredpath/LRResty.git $ cd LRResty

Проверьте, какая ветка вы используете в данный момент (она должна быть главной ветвью):

$ git branch * master

Проверьте ветку, которую вы хотите, в моем случае она называется «arcified»:

$ git checkout -b arcified origin/arcified Branch arcified set up to track remote branch arcified from origin. Switched to a new branch "arcified"

Подтвердите, что вы используете ветку, которую хотите:

$ git branch * arcified master

Если вы хотите позже обновить код, запустите git pull:

$ git pull Already up-to-date.

Перейдите в папку на новой машине, которую вы хотите загрузить с git на git bash.

Используйте нижеприведенную команду для загрузки кода из любой отрасли, которая вам нравится

git clone "git ssh url" -b "Branch Name"

Он загрузит соответствующий код ветвления.

Очень часто появляется необходимость создать в локальном клоне проекта новую ветку , закинуть в нее уже созданные или измененные файлы, протолкнуть новую ветку в удаленный репозиторий, например в , чтобы коллега-программист мог стянуть ветку и посмотреть изменения или результат.

Создаем и проталкиваем новую ветку

Есть два равнозначных способа создать и переключиться на новую ветку. Первый односрочный:

Root@user: git checkout -b new_feature

Второй, аналогичный первому, но в две строки:

Root@user: git branch new_feature root@user: git checkout new_feature

Готово. Новая ветка создана в локальном репозитории и в нее включены все локальные изменения. И мы переключились на новую локальную ветку . Можем создать коммит и протолкнуть новую ветку в удаленный репозиторий:

Root@user: git commit -m "new feature" root@user: git push origin new_feature

Где origin — название вашего удаленного репозиторий (origin — значение по умолчанию при клоне проекта), new_feature — название вашей новой ветки.

Затягиваем новую ветку из удаленного репозитория

Созданная нами ветка уже находится в удаленном репозитории и теперь нам нужно изолированно ее затянуть из репы. Если сделать просто pull , то новая ветка не подтянется. Если сделать просто git pull origin new_feature, то ветка сольется с веткой master. Поэтому делаем следующую последовательность:

Root@user: git fetch root@user: git checkout -b new_feature root@user: git pull origin new_feature

На первой строке с помощью команды git fetch смотрим есть ли новые ветки, при этом загрузка удаленных изменений не происходит. Второй строкой создает локальную ветку с наким же названием и переключаемся на нее. В конец, на третьей строке, затягиваем удаленные изменения в новую ветку. Система предложить сделать merge-commit.



Как загрузить ветку с git? (4)

Git clone и cd в имени репо:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git Cloning into "iOS-AppleWach"... $ cd iOS-AppleWach

Перейдите на ветку (страница GitHub), которую я хочу:

$ git checkout -b gh-pages origin/gh-pages Branch gh-pages set up to track remote branch gh-pages from origin. Switched to a new branch "gh-pages"

И потяните ветку:

$ git pull Already up-to-date.

$ ls index.html params.json stylesheets

У меня есть проект на GitHub. Я создал ветку на одном компьютере, а затем переместил мои изменения в github с помощью

Git push origin branch-name

Теперь я на другом компьютере, и я хочу загрузить эту ветку. Поэтому я попробовал:

Git pull origin branch-name

Но все это означало переписывание моей ветви мастера изменениями в моей новой ветке.

Что мне нужно сделать, чтобы правильно потянуть мою удаленную ветку?

$ git clone https://github.com/lukeredpath/LRResty.git $ cd LRResty

Проверьте, какая ветка вы используете в данный момент (она должна быть главной ветвью):

$ git branch * master

Проверьте ветку, которую вы хотите, в моем случае она называется «arcified»:

$ git checkout -b arcified origin/arcified Branch arcified set up to track remote branch arcified from origin. Switched to a new branch "arcified"

Подтвердите, что вы используете ветку, которую хотите:

$ git branch * arcified master

Если вы хотите позже обновить код, запустите git pull:

$ git pull Already up-to-date.

Перейдите в папку на новой машине, которую вы хотите загрузить с git на git bash.

Используйте нижеприведенную команду для загрузки кода из любой отрасли, которая вам нравится

git clone "git ssh url" -b "Branch Name"

Он загрузит соответствующий код ветвления.





Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта