Как извлечь файл коммитов из идентификатора коммита в git? - PullRequest
2 голосов
/ 11 ноября 2019

Я хочу извлечь файл фиксации перед фиксацией и после фиксации, используя только один идентификатор фиксации. Есть ли способ извлечь это?

commit 471d4d60dc21fbccb8c6b4616a00238c245f78f6
Author: Gilles Sadowski <gilles@harfang.homelinux.org>
Date:   Mon Oct 28 01:51:42 2019 +0100

MATH-1500 (unit tests).
src/test/ ... linalg/FieldLUDecompositionTest.java

commit 9988a5b3c4779eadfad9ea0c4925f5b327317814
Author: Gilles Sadowski <gilles@harfang.homelinux.org>
Date:   Sun Oct 27 15:11:56 2019 +0100

Code upgraded following MATH-1500.
src/main/... nonstiff/AdamsNordsieckTransformer.java

В этом случае я хочу извлечь имя файла "FieldLUDecompositionTest" перед коммитом и после коммита, используя только один идентификатор коммита "471d4d60dc21fbccb8c6b4616a00238c245f78f6"

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Правильный способ извлечения / восстановления файла из коммита с помощью Git 2.23+ (август 2019) использовать git restore ( менее запутанно, чем git checkout)

git restore <SHA1>

Это обновит только ваше рабочее дерево по умолчанию.

Получить предыдущий SHA1 легко:

471d4d60dc21fbccb8c6b4616a00238c245f78f6~

Git the следующий SHA1 более сложный: см. « Как мне найти следующий коммит в git? (Child / children of ref) »:

git log --format=%H --reverse --ancestry-path ${1:-HEAD}..${2:\"$(git rev-parse --abbrev-ref HEAD)\"} | head -1

More in ответ Торека )

git rev-list --topo-order --ancestry-path --reverse <id1>...<id2> | head -1

Таким образом, вы можете создать скрипт, который будет получать родительский и дочерний элементы данного коммита, и использовать git restore для получения / просмотра файлов этих коммитов.

0 голосов
/ 11 ноября 2019

Вы просто перемещаете голову к желаемой фиксации и копируете файл в другое место. Процедура будет следующей:

  1. git checkout 471d4d60dc21fbccb8c6b4616a00238c245f78f6 - вы находитесь в точке, где файл не был изменен
  2. Скопируйте файл в другое место.
  3. git checkout 9988a5b3c4779eadfad9ea0c4925f5b327317814 - это последний коммит из вашей истории.
  4. Скопируйте измененный файл в новое место.

Если вам нужна дополнительная информация о перемещении головы на ветке, выможете прочитать здесь .

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