【问题标题】:Git status - is there a way to show changes only in a specific directory?Git status - 有没有办法只在特定目录中显示更改?
【发布时间】:2010-10-17 10:49:05
【问题描述】:

我想查看自上次提交以来修改的文件列表,如git status 所示,但我只关心位于单个目录中的文件。有没有办法做到这一点?我试过git status <directory>,但它似乎做了一些完全不同的事情(列出所有更改的文件,就像我先写git add <directory>一样)。

git-status 的文档并没有说明太多,除了它接受与 git-commit 相同的选项(但 git-commit 的目的不是显示已更改文件的列表)。

【问题讨论】:

    标签: git directory status


    【解决方案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。

    学分:

    【讨论】:

      【解决方案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】:

      最简单的解决方案:

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

      当然这会丢弃颜色。

      【讨论】:

      猜你喜欢
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2021-02-15
      • 2019-01-28
      • 2017-01-05
      相关资源
      最近更新 更多