Есть ли способ сделать выходной формат git diff как cvs style diffs? Я считаю, что различия в git менее читабельны. Кроме того, git diffs появляется в more
раздражает - как я могу отключить это?CVS style diffs in git
ответ
Поиграйте со стандартным дифф форматированием:
git difftool -y -x "diff --unchanged-group-format='' --old-line-format='< %L' --new-line-format='> %L'"
Это дает CVS-подобные строки и oldlines, без контекста, но это не делает вставьте дополнительные функции между группами разных линий. Не совсем уверен, как достичь остальных, учитывая, что я не знаю, в какой степени вы хотели бы форматировать как CVS.
man diff
Для получения дополнительной информации
Также см
git difftool -y -x "diff -n"
Но я сомневаюсь, что это делает то, что вы хотите. Если это сработает для вас, чтобы каждый раз работать с git diff, см. Configuring diff tool with .gitconfig?, который ссылается на http://jeetworks.com/node/90 в принятом ответе.
Это в сочетании с http://stackoverflow.com/questions/11331582/how-to-make-git-diff-output-normal-diff-format-non-unified-non-context дает мне то, что я хочу. ура – user1207217
Вы можете отключить пейджер, установив core.pager
в пустую строку:
git config --global core.pager ''
Приветствия для этого. Я бы повысил, но, похоже, я не могу ... – user1207217
Я думаю, что обычный способ сделать это - установить его в 'cat'. –
Установка на кошку кажется более аккуратной. – user1207217
git diff
использует "универсальный" формат, diff -u
по умолчанию. cvs diff
использует более старый стандартный формат diff (удаленные строки, отмеченные <
, добавлены строки, отмеченные >
, без контекста вокруг каждой разницы).
Вы можете получить «контекстный дифф» с помощью git diff -c
или git diff -C5
, например, чтобы получить 5 строк контекста, а не по умолчанию 3.
diff --normal
(по крайней мере, если вы используете Diffutils GNU) будет производят разницу в старом стиле, но git diff
, похоже, не распознает опцию --normal
.
Лично я считаю, что контекст отличается гораздо более читабельным, чем различия в стиле старого, поэтому я никогда не нашел необходимости использовать различия старого стиля с git diff
. Попробуйте git diff -c
(вместе с предложением haggai_e отключить пейджер).
Если вы действительно хотите разницу в старом стиле (<
, >
, никакого контекста), возможно, есть способ сделать это.
EDIT:
Если git diff
не делать то, что вы хотите, вы можете извлечь копии изменений файла и использования независимо от различий инструмента вы хотите на них. Мой собственный инструмент get-versions
может извлекать несколько версий файла из git (или из RCS или CVS).
И вот еще одно решение, хотя это немного сложнее. В качестве примера я клонировал git repo для самого git
. Если я хочу, чтобы сравнить две последовательные версии файла верхнего уровня README
, я могу это сделать:
$ diff --normal <(git show 779d7e93773a0dcf918dc77023511fdc68161bd8:README) \
<(git show 71ce415dc088f19a0b8d6c8567dfdd6d851842b2:README)
24,26c24,25
< compatible with the GPLv2).
< It was originally written by Linus Torvalds with help of a group of
< hackers around the net. It is currently maintained by Junio C Hamano.
---
> compatible with the GPLv2). It was originally written by Linus
> Torvalds with help of a group of hackers around the net.
$
Было бы достаточно легко обернуть это в небольшой скрипт.
Обратите внимание, что путь к файлу, следующий за :
(README
в приведенном выше примере), относится к корню репозитория, а не к текущему каталогу. Вы можете указать имя ./
, чтобы сделать его относительно текущего каталога. (Последнее может не работать с некоторыми старыми версиями Git.)
Я не знаю, какую версию git это уместно, но для «git version 1.7.7.6» git diff -c недействителен, но git diff -Un (n для количества строк контекста) работает. git diff -U0 почти дает мне то, что я хочу, но мне все еще не нравится внешний вид. Это все зависит от предпочтения, в то время как вы предпочитаете контекст diffs, я не так, как это просто проверка здравомыслия, прежде чем совершить для меня вещь. Если мне нужны контекстные различия, я использую meld. Приветствия для подсказки. Опять же, я бы отметил, если это позволит мне. – user1207217
См. Http://stackoverflow.com/questions/11331582/how-to-make-git-diff-output-normal-diff-format-non-unified-non-context - здесь мы можем передать параметр --normal. Приветствия – user1207217
@ user1207217: Я обновил свой ответ (незадолго до того, как я прочитал ссылку в приведенном выше комментарии). –
- 1. Git search all diffs
- 2. снимки хранилища git vs diffs
- 3. определить различия CVS/git
- 4. Просмотр всех `git diffs` с помощью vimdiff
- 5. Будет ли git держать промежуточный diffs?
- 6. Git расширения одного файла истории Diffs только
- 7. Concatenate git diffs from all time
- 8. Интерфейс Git, который поддерживает Diffs после переименования
- 9. Файл для ремонта diffs в git
- 10. Миграция из CVS в GIT
- 11. CVS или SVN или GIT?
- 12. Передача истории CVS в GIT
- 13. Разница между GIT и CVS
- 14. Экспорт Git Изменения в CVS
- 15. button style in IE
- 16. Button style in android
- 17. Label-Style in Gnuplot
- 18. «style» field in package.json
- 19. Как эффективно хранить html diffs
- 20. style in body message in sendmail php
- 21. Реплицировать git-сервер github style
- 22. PHP-класс для разбора diffs
- 23. Git: добавить удаленное репо и только скачать diffs?
- 24. Git> diffs filter, показать только некоторые измененные классы/файлы
- 25. Есть ли способ просмотреть png diffs в git?
- 26. Как скачать diffs, присутствующие в промежуточной области в git
- 27. Git - редактировать файлы в ветке при проверке diffs
- 28. как я могу избежать странных git diffs, как это?
- 29. Parsing diffs (сгенерированный с помощью git-diff) с PHP
- 30. target border style in css
Это действительно должно было быть два отдельных вопроса. –