Git status - 有没有办法只在特定目录中显示更改?
Posted
技术标签:
【中文标题】Git status - 有没有办法只在特定目录中显示更改?【英文标题】:Git status - is there a way to show changes only in a specific directory? 【发布时间】:2010-10-17 10:49:05 【问题描述】:我想查看自上次提交以来修改的文件列表,如git status
所示,但我只关心位于单个目录中的文件。有没有办法做到这一点?我试过git status <directory>
,但它似乎做了一些完全不同的事情(列出所有更改的文件,就像我先写git add <directory>
一样)。
git-status 的文档并没有说明太多,除了它接受与 git-commit 相同的选项(但 git-commit 的目的不是显示已更改文件的列表)。
【问题讨论】:
【参考方案1】:从目录中:
git status .
你可以使用任何路径,使用这个语法:
git status <directoryPath>
例如路径为“my/cool/path/here”的目录
git status my/cool/path/here
【讨论】:
谢谢!此外,'git statusgit -C <directory> status
【参考方案2】:
请注意,如果您简化检查 git stats 而无需进入 git 目录;
### 创建文件 须藤纳米/usr/local/bin/gitstat ###把这个放进去 #!/usr/bin/env bash 目录=$1 如果 [[ $dir == "" ]];然后 echo "需要目录!" 出口 菲 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。
学分:
@查尔斯·贝利:https://***.com/a/715373/362780 Git Status From Outside of the Working Directory【讨论】:
【参考方案3】: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-status 那样显示新创建的(未跟踪的)文件...... 好的,我不确定您需要什么报告。如果您需要检查未暂存的文件,请尝试git ls-files --others <directory_in_question>
或 ls-files -o
。
git ls-files -o
递归地显示未暂存目录中的文件,而 git status
仅显示***目录。如果要替代git status
,则必须编写git diff
、git ls-files
输出并重新创建git status
提供的所有颜色编码等。我也很想看到这个问题的解决方案!【参考方案4】:
最简单的解决方案:
-
进入目录
git status | grep -v '\.\.\/'
当然这会丢弃颜色。
【讨论】:
如有必要,您可以添加一些修改以让颜色恢复。 example 1example 2以上是关于Git status - 有没有办法只在特定目录中显示更改?的主要内容,如果未能解决你的问题,请参考以下文章