Запутался при проверке в Git

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

3 ответа

Я думаю, что вы путаете терминологию, используемую другими системами контроля версий.git checkout это команда, используемая для переключения ветки, над которой вы работаете. git checkout master переключит вас на работу в основной ветке. git checkout test заставит вас работать в ветке с именем test. чтобы попытаться ответить на ваши вопросы:

  1. Я не понимаю этот вопрос, но думаю, что это связано с неправильным пониманием команды checkout. Каждая версия файла в git представляет собой отдельный хеш, журнал git покажет вам все коммиты, так что вы можете увидеть каждую версию файла там.
  2. чтобы изменить свою ветку на предыдущее состояние, которое вы используете git reset команда. git checkout -commitid- фактически отсоединит ваш указатель HEAD и оставит вас без ветки. Это может быть использовано, чтобы увидеть, каково было состояние во время этого коммита
  3. git checkout master изменит вашу рабочую ветку на master. Чтобы вернуться к последним изменениям, есть много вещей, которые люди делают, иногда они прячут свои существующие изменения, а затем, например, удаляют тайник.

В отличие от ClearCase (см. Мой старый ответ), git не работает для каждого файла отдельно.
Не существует "спецификации конфигурации" с "правилами выбора элементов".

git checkout может применяться к файлу, но по умолчанию восстанавливает содержимое всего дерева, а не только файла.
И это не будет так же, как cleartool checkout, потому что вам не нужно помечать (или даже блокировать) файл для изменения (например, CHECKEDOUT статус в ClearCase): это не имеет смысла в распределенной среде. Каждый файл в рабочем дереве git может быть изменен в любое время, добавлен в индекс и зафиксирован локально.

В ветках git есть просто ссылки на коммиты, которые однозначно идентифицируются хешами. Если вы хотите оформить конкретный коммит, вам нужно знать его хеш, ИЛИ у вас должны быть "ссылки" на коммит. Ветви и теги являются "ссылками" на коммиты, поэтому вы можете использовать имя ветки вместо хеша коммита для извлечения файлов в этом коммите.

3) Чтобы вернуться к последним изменениям, я делаю: git checkout master. Это возвращает к последней версии, но делает ли это проверку к последнему элементу?

Зависит от того, что вы подразумеваете под последней версией. Если под последней вы подразумеваете последнюю фиксацию, то последняя фиксация может быть в другой ветви, а не в master ветка. git reflog показывает вам список последних изменений во всех ссылках.

Другие вопросы по тегам