我如何识别在git提交中添加或删除的文件/目录?

poc*_*ese 18 git git-log

我需要编写一个脚本,逐步跟踪从git仓库添加和删除的文件和目录.

我试过用:

git log -n1 --pretty="format:" --name-only
Run Code Online (Sandbox Code Playgroud)

但这只能告诉我哪些文件已提交.它没有指定是添加还是删除.

有任何想法吗?

Cas*_*bel 31

你正在寻找的选项是--name-status.就像--name-only它实际上是一个git-diff选项; git-log接受这些以确定它将如何显示补丁.

git log -n 1 --pretty=oneline --name-status
Run Code Online (Sandbox Code Playgroud)

或等效(减去日志标题):

git diff --name-status HEAD^ HEAD
Run Code Online (Sandbox Code Playgroud)

正如isbadawi指出的那样,你也可以使用git -whatchanged.这几乎是带有特定diff输出的git-log:

git whatchanged -n 1
Run Code Online (Sandbox Code Playgroud)

--name-status但是,您可能更喜欢该版本,因为它不会显示所有blob哈希值,只显示人类可读的状态.

  • 以 _commit 消息、已更改文件的名称和状态的格式输出包含 **.gitignore** 文件的 **addition** 的特定提交的示例:`git log --name-status --diff- filter=A --follow .gitignore` (2认同)