Использование git diff в одном файле между первой и последней фиксацией

У меня есть текстовый файл (.yml), в который я ввожу некоторые тексты для использования в моей системе. Но теперь нам нужно знать, какие новые строчки сразу. Я думал использовать git для решения нашей проблемы, но не могу найти поясненную команду для этого.

Это возможно?


person Julio Vedovatto    schedule 30.07.2010    source источник
comment


Ответы (2)


Вы можете получить список коммитов примерно так:

git log --abbrev-commit --pretty=oneline

Что должно быть примерно так:

commitD Description
commitC Description
commitB Description
commitA Description

Выберите свои два коммита и замените их ниже:

git diff <commitA>..<commitB> -- /path/to/file

person Marco Ceppi    schedule 30.07.2010

Вы можете сделать это с помощью одной командной строки:

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file>

Использование --reverse со счетчиком 1 (-1 / --max-count 1) не работает ... поскольку оно меняет результирующий список после его усечения. Таким образом, вы либо используете --reverse вместе с командой head, либо вы используете tail -1.

Мне пришлось добавить -w для моего использования из-за переключателей в конце строки и использования табуляции против пробелов.

Это может работать не так, как ожидалось, если файл не был добавлен при первом коммите! Вы можете изменить строку выше на:

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file>
person OderWat    schedule 20.05.2011