В чем разница между git clone и checkout?

в чем разница между git clone и git checkout?

5 ответов


man-страница для проверки:http://git-scm.com/docs/git-checkout

man-страница для клона:http://git-scm.com/docs/git-clone

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

Примечание: Для тех, у кого есть фон SVN/CVS и новый для Git, эквивалент git clone в SVN / CVS это checkout. Та же формулировка разные термины часто сбивают с толку.


git clone - это получение ваших репозиториев с удаленного сервера git.

git checkout - это проверка желаемого статуса вашего репозитория (например, ветвей или определенных файлов).

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

git checkout develop_branch

например, вы хотите оформить заказ на определенный статус конкретного файла

git checkout commit_point_A -- <filename>

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


одна вещь, которую нужно заметить, - это отсутствие какой-либо" копии " в git. Это потому что у вас уже есть полное копировать в локальное РЕПО-ваше локальное РЕПО является clone выбранного вами восходящего РЕПО. Так вы эффективно личку checkout of все, не ставя некоторую "блокировку" на эти файлы в справочном РЕПО.

Git предоставляет хэш-значения SHA1 в качестве механизма проверки того, что у вас есть копия файла / дерева каталогов / фиксации / РЕПО-это то же самое, что и тот, кто может объявить вещи "хозяином" в иерархии доверия. Это позволяет избежать всех этих "блокировок", которые вызывают большинство систем SCM задыхаться (с обычными проблемами частных копий, больших слияний, и никакого реального контроля или управления исходным кодом ;-) !


просто git checkout имеет 2 использования

  1. переключение между существующими локальными ветвями, такими как git checkout <existing_local_branch_name>
  2. создайте новую ветвь из текущей ветви, используя флаг-b. Предположим, если вы находитесь в master branch, то git checkout -b <new_feature_branch_name> создаст новую ветку с содержимым master и переключится на вновь созданную ветку

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


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