Использование git diff в одном файле между первым и последним коммитом - PullRequest
5 голосов
/ 30 июля 2010

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

Возможно ли это?

Ответы [ 2 ]

11 голосов
/ 30 июля 2010

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

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

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

commitD Description
commitC Description
commitB Description
commitA Description

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

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

3 голосов
/ 20 мая 2011

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

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...