тривиальный пример псевдоним для извлечения предыдущей версии файла.
Хитрость здесь формат вывода журнала с --format только вернуть коммита, окрошка
[alias]
prev = "!f(){ git checkout $(git log -1 --format="%H" --skip=1 -- ${GIT_PREFIX:-.}/$1) -- ${GIT_PREFIX:-.}/$1; git reset ${GIT_PREFIX:-}/$1; }; f"
Использование git log -1
гарантирует, что git prev
всегда возвращает непосредственный родительский файл. Выбор следующего родителя может быть более сложным.
Обратите внимание, что файл, однажды выписанный, сразу же добавляется в индекс. Он не сливается с вашей существующей копией и не предупреждает о перезаписывании локальных изменений. Я включил вызов git-reset, чтобы гарантировать, что файл проверки находится только в рабочем каталоге, а не в индексе.
Использование GIT_PREFIX
позволяет вводить относительные пути, хотя только относительно недавние версии git поддерживают GIT_PREFIX.
редактировать ..
То же самое с помощью GIT Rev-лист .. очень мощная команда GIT, предназначенный для перемещения GIT родословной графики, когда сценариев и автоматизации ...
[alias]
prev = "!f(){ git checkout $(git rev-list --max-count=1 --skip=1 HEAD -- ${GIT_PREFIX:-.}/$1) -- ${GIT_PREFIX:-.}/$1; git reset ${GIT_PREFIX:-}/$1; }; f"
Что вы спрашиваете здесь? Псевдоним для проверки версии файла, записанного в родительском элементе 'HEAD'? Просьба уточнить. – Jubobs
Кроме того, что такое 'FHEAD'? – Jubobs
@Jubobs Вопрос кажется мне достаточно ясным: найдите предыдущую версию определенного файла, где «предыдущий» означает «способ, который был непосредственно перед последним фиксатором, который изменил этот файл» (и игнорирование других коммитов, которые не меняются этот файл). – hvd