git diff: Показать имя ветки вместо хеша коммита - PullRequest
0 голосов
/ 02 декабря 2019

git diff - отличный инструмент для совместной работы, но иногда бывает полезно, чтобы литеральные значения передавались в git diff A B, используемый в выходных данных, вместо хэшей ссылок A и B.

Рассмотрим следующий вывод git diff:

$ git diff my-first-branch my-second-branch
diff --git a/file b/file
index c77692b..38ea2ea 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
 Added this file
+Added this line

Было бы полезно иметь параметр для отображения my-first-branch..my-second-branch вместо c77692b..38ea2ea, например.

Есть ли варианты или настройки для этого?

Для предварительного ответа на следующие предостережения и ответы:

  • "Это нарушает воспроизводимость различий"
    • В любом случае, локальные изменения не могут быть переданы другим, поэтому это имя полезно, если ветки, например, master и issue-1234
  • "Названия ссылок неоднозначны"
    • Я не запрашиваю git reflog вывод, но буквальные аргументы командной строки
  • "Вы можете сделать это с помощью sedone-liner "
    • Это меняет многие настройки по умолчанию, в том числе отключает пейджер, раскраску и другие опции, так как stdout больше не является tty.

1 Ответ

1 голос
/ 02 декабря 2019

Эти идентификаторы предназначены для рассеянных BLOB-объектов, чьи имена приведены выше (и с текстовыми различиями в выходных данных ниже), например, a/file равно c77692b. Запрашиваемое «вместо» с изменяемыми именами ссылок вместо реальных идентификаторов BLOB-объектов будет очень плохим ходом.

showcmd () { echo "$@"; "$@"; }

даст вам то, что вы хотите, например, showcmd git diff master issue-1234 > myoutput или

gitdiff() { echo git diff "$@"; git diff "$@"; }

, а затем gitdiff master issue-1234.

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