Учитывая этот репозиторий:
$ git log -p | grep -v Author
commit 3841ace5539820cf8a45edd7033bdd4e5edf3ab2
Date: Sat Jun 9 18:22:15 2018 -0700
Add baz to test.txt
diff --git a/test.txt b/test.txt
index 5716ca5..e2994c5 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
bar
+baz
commit df9de6c79d2374741792b9e5762468f83ab857b8
Date: Sat Jun 9 18:21:58 2018 -0700
Remove foo add bar to test.txt
diff --git a/test.txt b/test.txt
index 257cc56..5716ca5 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1 @@
-foo
+bar
commit 74c1beb71d08020635f39edd80dff15ce279742e
Date: Sat Jun 9 18:21:21 2018 -0700
Add foo to test.txt
diff --git a/test.txt b/test.txt
index e69de29..257cc56 100644
--- a/test.txt
+++ b/test.txt
@@ -0,0 +1 @@
+foo
commit a970fd59229f791f2f3a7be97014843e55b651d3
Date: Sat Jun 9 18:20:58 2018 -0700
Add test.txt
diff --git a/test.txt b/test.txt
new file mode 100644
index 0000000..e69de29
Эта команда производит вывод, который вы ищете:
$ git log -p --reverse --unified=0 --pretty=format: test.txt \
| grep ^[+-] \
| grep -vE '^[+-]{3}'
+foo
-foo
+bar
+baz
Я не смог найти команду чистого журнала git, которая делаеттрюк.Однако, предполагая, что вас не интересуют контекстные строки, использование grep
для пост-обработки вывода делает свое дело.
Идея состоит в том, чтобы фильтровать выходные данные, оставляя только строки изменения (т.е. начинается с +
или -
), а затем отфильтруйте легенду до / после (т. е. --- a/test.txt
и +++ b/test.txt
).Конечно, это может оказаться проблематичным, если в файле (ах) есть содержимое, в котором есть строки, начинающиеся с ++
.