如何查看上次提交中更改了哪些文件

Posted

技术标签:

【中文标题】如何查看上次提交中更改了哪些文件【英文标题】:How to see which files were changed in last commit 【发布时间】:2018-09-25 22:46:51 【问题描述】:

在此提交消息中,它表示 2 个文件已更改。

$ git commit -m "fixed .gitignore"
[master c30afbe] fixed .gitignore
 Committer: Sahand Zarrinkoub <sahandzarrinkoub@n133-p41.eduroam.kth.se>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 2 files changed, 5 insertions(+), 4 deletions(-)

这对我来说有点令人惊讶。我以为我只准备了一个要更改的文件。现在,我想看看哪些文件已更改以及如何更改。这样做的方法是什么?

【问题讨论】:

你试过git status吗? 你也可以试试git diff 你用什么命令得到这个消息? How to have git log show filenames like svn log -v的可能重复 How to list all the files in a commit?的可能重复 【参考方案1】:

你可以试试git log --stat

这里--stat 将显示每次提交更改的每个文件的插入和删除次数。

示例:以下提交在Demo.java文件中添加了67行并删除了38行:

commit f2a238924456ca1d4947662928218a06d39068c3
Author: X <X@example.com>
Date: Fri May 21 15:17:28 2020 -0500
Add a new feature
Demo.java | 105 ++++++++++++++++++++++++-----------------
1 file changed, 67 insertion(+), 38 deletions(-)

【讨论】:

此命令将仅显示最后一次提交统计信息:git log --stat -1【参考方案2】:

除了 Nitin Bisht 的回答之外,您还可以使用以下内容:

git log -1 --stat --oneline

它将显示有关上次提交中更改了哪些文件的简明信息。自然,可以指定任意数量的提交来代替“-1”,以显示在最后“-n”提交中更改的文件。

您还可以跳过传递“--no-merges”标志的合并提交:

git log -1 --stat --oneline --no-merges

【讨论】:

【参考方案3】:

获取自上次提交以来所有更改的文件

git diff --name-only HEAD HEAD~1

【讨论】:

这应该是公认的答案,谢谢@Robin He! OP:“现在,我想看看哪些文件已更改以及如何更改”......所以不,这个答案只解决了所要求内容的一半. 您也可以使用^(父提交)运算符:git diff --name-only HEAD HEAD^【参考方案4】:

您可以通过多种方式做到这一点。这是我在没有查看文档的情况下想出的。

$ git log -1 --name-only

commit 3c60430b752bca26bd3c80604df87ffb2ae358 (HEAD -> master, origin/master, origin/HEAD)
Author: Name Surname <name.surname@email.com>
Date:   Mon Apr 2 18:17:25 2018 +0200

    Example commit

.gitignore
README
src/main.c

或者:

$ git log -1 --name-only --oneline

commit 3c60430 (HEAD -> master, origin/master, origin/HEAD) Example commit
.gitignore
README
src/main.c

或者:

$ git log -1 --stat --oneline

commit 3c60430 (HEAD -> master, origin/master, origin/HEAD) Example commit
.gitignore |  2 ++
README     |  8 ++++++++
src/main.c | 12 ++++++++++++
3 files changed, 22 insertions(+)

【讨论】:

言归正传,命令简单,谢谢【参考方案5】:

git diff-tree --no-commit-id --name-only &lt;commit_hash&gt;

【讨论】:

此命令仅列出在该提交中更改的***目录 在 diff-tree 之后添加 -r 应该可以解决这个问题【参考方案6】:
git log  // this will give you the hash-code 
git show hash-code   

【讨论】:

以上是关于如何查看上次提交中更改了哪些文件的主要内容,如果未能解决你的问题,请参考以下文章

如何查看日志中每个提交的更改文件? [复制]

教你如何查看 Git 提交中发生了什么变化

查看commit修改的内容

如何查看Subversion中某个修订版上的文件所做的更改

如何使vim指示自上次保存以来文件已更改?

如何查看git提交到本地的文件