Могу ли я посмотреть, на какой ревизии находится конкретный файл, используя git? - PullRequest
1 голос
/ 18 августа 2011
$ git init
$ echo zero > a
$ git add a
$ git commit -m zero
$ echo other > a
$ git add a
$ git commit -m other
$ echo whatever > a
$ git add a
$ git commit -m whatever

Я проверяю файл, как это было, когда я делал коммит во второй раз, когда файл содержал текст other.

$ git checkout HASH_OF_COMMIT_OTHER a
$ cat a
other
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   a
#

Какую команду запустить на a, чтобы git сообщал, к какому набору изменений она относится в данный момент? В этом случае мне бы хотелось, чтобы он показал мне хэш 2-го коммита, а также, если это возможно, сообщение о коммите.

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

После того, как вы запустите команду git checkout HASH_OF_COMMIT_OTHER a, рабочее дерево и индекс будут обновлены до версии a из HASH_OF_COMMIT, но записи о том, как файл был изменен для перехода в это состояние, не сохранились.,Это часть философии git по отслеживанию содержимого - не имеет значения, как файл перешел в состояние, в котором он находится при определенной фиксации, он просто записывает точное содержимое файлов в каждом из них.

Вы можете, конечно, написать короткий скрипт, чтобы найти все коммиты, которые содержат файл с точно таким содержимым (и по этому пути), если хотите, но обычно это не нужно.

1 голос
/ 18 августа 2011

После долгих поисков способов сделать это, используя стандартные команды git, я вернулся к такому SO-вопросу, который содержит именно то, что вы ищете.

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