Запутался при проверке в Git
У меня проблемы с пониманием процесса оформления заказа Git
,
Через кли мы делаем:git log
и история.
1) Как мы узнаем, какой файл / версия тот, который мы хотим проверить? Я вижу только хэши / автор / комментарии / даты. Не имя файла.
2) Если я сделаю git checkout -commitid-
тогда я иду к этой предыдущей версии. Это то же самое, что и проверка в ClearCase?
3) Чтобы вернуться к последним изменениям, я делаю: git checkout master
, Это возвращает к последней версии, но делает ли это проверку к последнему элементу?
3 ответа
Я думаю, что вы путаете терминологию, используемую другими системами контроля версий.git checkout
это команда, используемая для переключения ветки, над которой вы работаете. git checkout master
переключит вас на работу в основной ветке. git checkout test
заставит вас работать в ветке с именем test. чтобы попытаться ответить на ваши вопросы:
- Я не понимаю этот вопрос, но думаю, что это связано с неправильным пониманием команды checkout. Каждая версия файла в git представляет собой отдельный хеш, журнал git покажет вам все коммиты, так что вы можете увидеть каждую версию файла там.
- чтобы изменить свою ветку на предыдущее состояние, которое вы используете
git reset
команда.git checkout -commitid-
фактически отсоединит ваш указатель HEAD и оставит вас без ветки. Это может быть использовано, чтобы увидеть, каково было состояние во время этого коммита - git checkout master изменит вашу рабочую ветку на master. Чтобы вернуться к последним изменениям, есть много вещей, которые люди делают, иногда они прячут свои существующие изменения, а затем, например, удаляют тайник.
В отличие от ClearCase (см. Мой старый ответ), git не работает для каждого файла отдельно.
Не существует "спецификации конфигурации" с "правилами выбора элементов".
git checkout
может применяться к файлу, но по умолчанию восстанавливает содержимое всего дерева, а не только файла.
И это не будет так же, как cleartool checkout,
потому что вам не нужно помечать (или даже блокировать) файл для изменения (например, CHECKEDOUT
статус в ClearCase): это не имеет смысла в распределенной среде. Каждый файл в рабочем дереве git может быть изменен в любое время, добавлен в индекс и зафиксирован локально.
В ветках git есть просто ссылки на коммиты, которые однозначно идентифицируются хешами. Если вы хотите оформить конкретный коммит, вам нужно знать его хеш, ИЛИ у вас должны быть "ссылки" на коммит. Ветви и теги являются "ссылками" на коммиты, поэтому вы можете использовать имя ветки вместо хеша коммита для извлечения файлов в этом коммите.
3) Чтобы вернуться к последним изменениям, я делаю: git checkout master. Это возвращает к последней версии, но делает ли это проверку к последнему элементу?
Зависит от того, что вы подразумеваете под последней версией. Если под последней вы подразумеваете последнюю фиксацию, то последняя фиксация может быть в другой ветви, а не в master
ветка. git reflog
показывает вам список последних изменений во всех ссылках.