我想只显示文件中的更改,而不显示提交消息或哈希或其他任何内容。
假设我的文件开始为空。然后一个提交为它添加一行,文件现在看起来像这个
foo
删除该行并添加新行的第二个提交
bar
第三次和最后一次提交添加了另一行
bar
baz
输出应为
+foo
-foo
+bar
+baz
对于我的特定用例,我只需找到任何使其成为文件的内容(理想情况下foo
应该显示一次);我不在乎它何时被添加或由谁,但任何可以让我接近这个的答案都很受欢迎,我会修改输出以显示我需要的内容。
答案 0 :(得分:0)
鉴于此存储库:
$ 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 log命令来完成这个伎俩。但是,假设您对上下文行不感兴趣,使用grep
对输出进行后期处理就可以了。
我们的想法是过滤输出,只留下更改行(即以+
或-
开头),然后过滤出前/后图例(即--- a/test.txt
和{{ 1}})。当然,如果文件中的内容以+++ b/test.txt
开头,则可能会出现问题。