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 status ' 似乎正在做我所期望的 - 老实说,我不记得我以前遇到过什么问题......也许这是一个不同的 git 版本的问题,不知道。 没问题,而且可能 - 新版本的 git 似乎让事情变得更容易了。 是的,行为肯定从 1.6 更改为 1.7。它满足 1.7 中的 OP 要求,但 1.6 在整个 repo 中继续。 即使在熟悉了最复杂的命令(如 stash 和 rebase)之后,我也一直在寻找这个命令,因为我根本不想看到跟踪的文件处于红色状态。 git rm 也没有用,因为它在提交时从索引中删除,但这个命令实际上是一个真正需要的命令,只需要使用很少的东西。简单的解决方案总是那些无处可见的解决方案。 我不得不使用git -C &lt;directory&gt; 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 -sgit diff --statgit 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 &lt;directory_in_question&gt;ls-files -o git ls-files -o 递归地显示未暂存目录中的文件,而 git status 仅显示***目录。如果要替代git status,则必须编写git diffgit ls-files 输出并重新创建git status 提供的所有颜色编码等。我也很想看到这个问题的解决方案!【参考方案4】:

最简单的解决方案:

    进入目录 git status | grep -v '\.\.\/'

当然这会丢弃颜色。

【讨论】:

如有必要,您可以添加一些修改以让颜色恢复。 example 1example 2

以上是关于Git status - 有没有办法只在特定目录中显示更改?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 git status 中的编号在 git 中添加特定文件?

git status 没有显示我更改的文件

有没有办法在一个命令中获取 git 根目录?

回复特定推文Twitter API

git status 命令

git status 命令