Яка різниця між клоном git та checkout?


Відповіді:


337

Основна сторінка для оформлення замовлення: http://git-scm.com/docs/git-checkout

Сторінка людини для клонування: http://git-scm.com/docs/git-clone

Підсумовуючи це, клон призначений для отримання сховищ, яких у вас немає, замовлення - для перемикання між гілками у вашому сховищі.

Примітка: для тих, хто має SVN / CVS-фон і не є новим у Git, еквівалент git cloneSVN / CVS є checkout. Одно і те ж формулювання різних термінів часто заплутане.


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

8
а коли ви використовуєте "тягнути" проти "замовити"?
Кокодоко

27
pull - це збір плюс злиття, замовлення - це локальна операція, яка працює лише на даних, які вже отримані. Тож це зовсім не схоже на замовлення svn.
Серпень Ліллеас

13
Походячи зі світу SVN, я також розгубився. Нічого .. який безлад. В ідеальному світі я б змусив кожного виробника системи управління джерелами використовувати ті самі умови.
Золтан Тамасі

5
Fork - це термін github і не пов'язаний із самим git.
Серпень Ліллеас

123

git clone - це отримати ваші сховища з віддаленого сервера git.

git checkout - це перевірка бажаного стану вашого сховища (наприклад, гілок чи певних файлів).

Наприклад, ви зараз перебуваєте на головній гілці і ви хочете перейти на розробку.

git checkout develop_branch

Наприклад, ви хочете перевірити певний статус певного файлу

git checkout commit_point_A -- <filename>

Ось хороша довідка для вивчення Git, що дозволяє зрозуміти набагато легше.


20
"з віддаленого сервера git" - не потрібно, щоб сервер був віддалений. git cloneтакож працюватиме з місцевими репостами.
SET

1
Дякуємо за посилання на візуальну посилання на git!
Девід Пойнтер

@Kit Ho: Посилання прекрасне як посилання, але це не дуже допоможе для тих, хто має основні питання щодо git, як людина вище. Як говориться в самій статті, "Після того, як ви трохи дізнаєтесь про те, як працює git, цей сайт може зміцнити ваше розуміння"
SN

Кругові визначення не так корисні. Слово "fetch", яке використовується для опису клону, корисне і додає значення, але фраза "checkout to checkout ..." не додає значення, а також не допомагає розрізнити різницю між двома операціями.
C Перкінс

11

Одне, що слід помітити, - це відсутність будь-якої "Copyout" всередині git. Це тому, що у вас вже є повна копія у вашому місцевому репо-репортажі - місцеве репо є cloneобраним вами репо рейтингом. Таким чином, ви фактично є особистим checkoutу всьому , не ставлячи певний "замок" на ці файли в репортажному репо.

Git надає хеш-значення SHA1 як механізм підтвердження того, що у вас є копія файлу / каталогу дерева / commit / repo точно така сама, як та, яка використовується тим, хто має змогу оголосити речі "Master" в межах ієрархії довіри. Це дозволяє уникнути всіх тих «замків», які призводять до того, що більшість систем SCM задихається (із звичайними проблемами приватних копій, великими злиттями та відсутністю реального контролю або управління вихідним кодом ;-)!


4
Питання не згадує про блокування, і слід вважати, що в цей час людина за замовчуванням не знайомий з цією концепцією, тому ці відмінності від старих VCSes слід пояснювати лише у випадку чіткого запитання.
wRAR

6

Просто git checkout має 2 використання

  1. Перемикання між існуючими локальними відділеннями, як-от git checkout <existing_local_branch_name>
  2. Створіть нову гілку з поточної гілки за допомогою flag -b. Припустимо, якщо ви перебуваєте у головній гілці, тоді git checkout -b <new_feature_branch_name>створіть нову гілку із вмістом головного та переключитесь на новостворену гілку

Ви можете знайти більше варіантів на офіційному сайті


Приємно. Цей -bпараметр є дивним, що створює нову локальну гілку і перевіряє її одночасно в одній команді. Дуже сподобалося!
RBT

2

checkout може бути використаний у багатьох випадках:

1-й випадок : перемикання між відділенням у локальному сховищі Наприклад: git checkout exists_branch_to_switch

Ви також можете створити нову гілку та вимкнутись за допомогою цього випадку -b

git checkout -b new_branch_to_switch

2-й випадок : відновлення файлу з x rev

git checkout rev file_to_restore ...

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