Як завантажити гілку з git?


214

У мене розміщений проект на GitHub. Я створив гілку на одному комп’ютері, а потім змістив зміни до GitHub за допомогою:

git push origin branch-name

Зараз я перебуваю на іншому комп’ютері, і хочу завантажити цю гілку. Тому я спробував:

git pull origin branch-name

... але все це було перезаписано мою головну гілку зі змінами в моїй новій гілці.

Що мені потрібно зробити, щоб правильно витягнути свою віддалену гілку, не перезаписуючи існуючі гілки?

Відповіді:


375

Завдяки пов'язаному з цим питанням я з’ясував, що мені потрібно "перевірити" віддалену гілку як нову локальну гілку та вказати нову назву місцевої гілки.

git checkout -b newlocalbranchname origin/branch-name

Або ви можете зробити:

git checkout -t origin/branch-name

Останній створить гілку, яка також встановлена ​​для відстеження віддаленої гілки.


Оновлення: минуло 5 років, як я опублікував це питання. Я багато чого навчився, і git покращився відтоді. Зараз у мене звичний робочий процес трохи інший.

Якщо я хочу отримати віддалені гілки, я просто запускаю:

git pull

Це дозволить отримати всі віддалені гілки та об'єднати поточну гілку. Він відобразить вихід, який виглядає приблизно так:

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.

Тепер git знає про моє нове my-bugfix-branch. Щоб перейти на цю гілку, я можу просто запустити:

git checkout my-bugfix-branch

Зазвичай, я повинен був би створити гілку , перш ніж я міг перевірити це, але в більш нових версіях мерзотника, він досить розумний , щоб знати , що ви хочете , щоб оформити локальну копію цього віддаленого філії.


Я використовую GIT 1.7.2.5, і команда , яка працювала для мене: git branch --track XX origin/XX. Ваша команда дає мені помилку.
dimitarvp

8
Якщо у вас не завантажені всі віддалені гілки, це може не вдатися. Зробіть "git віддалене оновлення", щоб зняти їх.
Бен Уолдінг

1
Насправді, це може бути навіть коротше "git checkout-name". Якщо назва гілки є такою ж, як віддалена гілка відстеження (тобто походження / ім'я гілки), то її автоматично місцева гілка відстеження.
DavidN

64

Для будь-яких новачків Git, як я, ось кілька кроків, які ви можете виконати, щоб завантажити віддалене сховище, а потім перейти до гілки, яку ви хочете переглянути. Вони, ймовірно, якимось чином зловживають Git, але це зробило роботу для мене! :-)

Клоніруйте сховище, для якого потрібно завантажити код (у цьому прикладі я вибрав проект LRResty на Github):

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

Перевірте, яку галузь ви використовуєте в цей момент (це повинна бути головна гілка):

$ git branch    
* master

Ознайомтеся з потрібною гілкою, у моєму випадку вона називається «арфіфікованою»:

 $ 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.

"Вони, певно, зловживають Гітом якимось чином" - ні, це точно так.
Big McLargeHuge

28

Ви можете використовувати git remote на зразок:

git fetch origin

а потім встановіть локальну гілку для відстеження віддаленої гілки, як показано нижче:

git branch --track [local-branch-name] origin/remote-branch-name

Тепер у вас буде вміст віддаленої гілки github у локальному імені-філії.

Ви можете перейти до цієї назви місцевої філії та розпочати роботу:

git checkout [local-branch-name]

18

Ви можете використовувати:

git clone <url> --branch <branch>

клонувати / завантажувати лише вміст гілки.

Це мені було особливо корисно, оскільки вміст моєї гілки був зовсім іншим від основного відділення (хоча це зазвичай не так). Отже, пропозиції, перелічені іншими вище, не допомогли мені, і я отримав копію майстра навіть після того, як я перевірив гілку і потягнув.

Ця команда безпосередньо дасть вам вміст гілки. Це працювало для мене.


1
Це найкраща відповідь. Простий і ефективний.
Derek

2
Це, здається, не працює для мене. Там сказано, що вже є папка з такою назвою (яка, звичайно, є)
Джонатан Тузман

1
@Jonathan Він не зможе додати нову гілку до існуючої. Його можна використовувати лише для клонування свіжої копії. Я не бачу, чому вже повинна бути папка з цим ім'ям, якщо ви вже не клонували сховище. Спробуйте клонувати в іншому місці.
Старий Маркус

Не оновлює існуючий проект новим відділенням
Dazzle

16

Перейдіть до папки на вашій новій машині, яку ви хочете завантажити з git on git bash.

Використовуйте команду нижче, щоб завантажити код з будь-якої вподобаної вам гілки

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

Він завантажить відповідний код філії.


9

Git clone та CD у назві repo:

$ 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


0

Ви можете спробувати

git fetch <remoteName> <branchName>

Наприклад:

git fetch origin MyRemoteBranch

-8

Створіть новий каталог і зробіть клон замість цього.

git clone (адреса походження) (назва філії)


3
Ви не можете клонувати лише гілку в Git. Лише повний клон сховища може зробити.
Алан Хаггай Алаві
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.