如果您每天都使用 Git,您可能会进行很多提交。如果您在与其他人合作的项目中每天都使用 Git,那么可以肯定地认为每个人都在进行大量提交。每一天。这意味着您意识到 Git 日志可能会变得多么令人困惑,无休止的变化滚动,而且看不到更改了什么。
那么,您如何找出特定提交中更改了哪些文件呢?这比您想象的要容易。
查找提交中更改了哪些文件
要查找给定提交中更改了哪些文件,请使用 git log --raw
命令。这是最快、最简单的方法来了解提交影响了哪些文件。git log
命令通常未被充分利用,这主要是因为它有太多的格式化选项,许多用户被太多的选择所淹没,并且在某些情况下,文档不清晰。
Git 中的日志机制非常灵活,--raw
选项提供了当前分支中的提交日志,以及每个已更改文件的列表。
这是标准 git log
的输出
$ git log
commit fbbbe083aed75b24f2c77b1825ecab10def0953c (HEAD -> dev, origin/dev)
Author: tux <tux@example.com>
Date: Sun Nov 5 21:40:37 2020 +1300
exit immediately from failed download
commit 094f9948cd995acfc331a6965032ea0d38e01f03 (origin/master, master)
Author: Tux <tux@example.com>
Date: Fri Aug 5 02:05:19 2020 +1200
export makeopts from etc/example.conf
commit 76b7b46dc53ec13316abb49cc7b37914215acd47
Author: Tux <tux@example.com>
Date: Sun Jul 31 21:45:24 2020 +1200
fix typo in help message
即使作者在提交消息中清楚地指定了更改了哪些文件,日志也相当简洁。
这是 git log --raw
的输出
$ git log --raw
commit fbbbe083aed75b24f2c77b1825ecab10def0953c (HEAD -> dev, origin/dev)
Author: tux <tux@example.com>
Date: Sun Nov 5 21:40:37 2020 +1300
exit immediately from failed download
:100755 100755 cbcf1f3 4cac92f M src/example.lua
commit 094f9948cd995acfc331a6965032ea0d38e01f03 (origin/master, master)
Author: Tux <tux@example.com>
Date: Fri Aug 5 02:05:19 2020 +1200
export makeopts from etc/example.conf
:100755 100755 4c815c0 cbcf1f3 M src/example.lua
:100755 100755 71653e1 8f5d5a6 M src/example.spec
:100644 100644 9d21a6f e33caba R100 etc/example.conf etc/example.conf-default
commit 76b7b46dc53ec13316abb49cc7b37914215acd47
Author: Tux <tux@example.com>
Date: Sun Jul 31 21:45:24 2020 +1200
fix typo in help message
:100755 100755 e253aaf 4c815c0 M src/example.lua
这准确地告诉您哪个文件已添加到提交中以及文件是如何更改的(A
表示已添加,M
表示已修改,R
表示已重命名,D
表示已删除)。
Git whatchanged
git whatchanged
命令是一个遗留命令,早于日志功能。其文档表明您不应使用它,而应使用 git log --raw
,并暗示它基本上已被弃用。但是,我仍然发现它是一个有用的快捷方式,可以获得(大部分)相同的输出(尽管排除了合并提交),并且我预计如果它被删除,我会创建一个别名。如果您不需要日志中的合并提交(如果您只想查看更改的文件,您可能不需要),请尝试 git whatchanged
作为一个简单的助记符。
查看更改
您不仅可以查看更改了哪些文件,还可以让 git log
显示文件中到底更改了什么。您的 Git 日志可以生成内联 diff,逐行显示每个文件的所有更改,使用 --patch
选项
commit 62a2daf8411eccbec0af69e4736a0fcf0a469ab1 (HEAD -> master)
Author: Tux <Tux@example.com>
Date: Wed Mar 10 06:46:58 2021 +1300
commit
diff --git a/hello.txt b/hello.txt
index 65a56c3..36a0a7d 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1,2 @@
Hello
-world
+opensource.com
在此示例中,从 hello.txt
中删除了单词“world”,并添加了新行“opensource.com”。
这些补丁可以与常见的 Unix 实用程序(如 diff 和 patch)一起使用,如果您需要在其他地方手动进行相同的更改。补丁也是总结特定提交引入的新信息的重要部分的好方法。当您在冲刺期间引入错误时,这是一个宝贵的概述。为了更快地找到错误的原因,您可以忽略文件中未更改的部分,而只查看新代码。
用于复杂结果的简单命令
您不必了解引用、分支和提交哈希来查看提交中更改了哪些文件。您的 Git 日志旨在向您报告 Git 活动,如果您想以特定方式格式化它或提取特定信息,通常需要浏览许多屏幕的文档来组合正确的命令。幸运的是,关于 Git 历史记录的最常见请求之一只需一两个选项即可:--raw
和 --patch
。如果您不记得 --raw
,只需想,“Git,更改了什么?” 并键入 git whatchanged
。
评论已关闭。