我想查看自上次提交以来修改过的文件列表,就像 git status
显示的那样,但我只关心位于单个目录中的文件。有办法做到这一点吗?我尝试了 git status <directory>
,但似乎这完全是不同的事情(列出所有更改的文件,就好像我先写了 git add <directory>
)。
git-status 的文档并没有提供太多信息,除了它接受与 git-commit 相同的选项(但 git-commit 的目的不是显示更改文件的列表)。
在目录内部:
git status .
您可以使用任何路径,只需使用以下语法:
git status <directoryPath>
例如对于路径为"my/cool/path/here"的目录
git status my/cool/path/here
git status
和 git commit
接受相同的选项是因为 git status
的目的是展示如果你使用与传递给 git status
相同的选项提交时会发生什么。从这个角度来看,git status
实际上就是 git commit --preview
。git diff --stat --cached -- <directory_of_interest>
还有这个,显示未暂存的更改:
git diff --stat -- <directory_of_interest>
或者这个,它展示了两者:
git diff --stat HEAD -- <directory_of_interest>
git ls-files --others <directory_in_question>
或者 ls-files -o
。 - CB Baileygit ls-files -o
会递归显示未暂存目录下的文件,而 git status
只会显示顶级目录。如果要将其替换为 git status
,需要组合 git diff
和 git ls-files
的输出,并重新创建 git status
所提供的颜色编码等。我也非常希望能够找到解决方案! - Peter V. Mørch### 创建文件 sudo nano /usr/local/bin/gitstat
### 输入以下内容
#!/usr/bin/env bash
dir=$1
if [[ $dir == "" ]]; then echo "需要输入目录!" exit fi
echo "获取'$dir'的Git统计信息。"
git --git-dir=$dir/.git --work-tree=$dir diff --stat
### 赋予执行权限 sudo chmod +x /usr/local/bin/gitstat
并调用这个简单的脚本:gitstat /path/to/foo-project
。当你在foo-project
中使用时,也可以只输入gitstat .
,这样会比git status -s
、git diff --stat
或git diff --stat HEAD
更短,如果你总是使用控制台而不是GUI。
致谢:
git -C <directory> status
。 - Jake Irelandgit diff --stat
- Gjaa