首页 文章

Git状态 - 有没有办法只在特定目录中显示更改?

提问于
浏览
116

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

除了git-commit所接受的相同选项(但git-commit的目的不是显示已更改文件的列表)之外,git-status的文档并没有多大帮助 .

4 回答

  • 1

    从目录中:

    git status .
    

    您可以使用任何路径,使用以下语法:

    git status <directoryPath>
    

    例如,对于路径为“my / cool / path / here”的目录

    git status my/cool/path/here
    
  • 26

    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>
    
  • 13

    最简单的解决方案

    • 转到目录

    • git status | grep -v '\.\.\/'

    当然这会丢弃颜色 .

  • 164

    作为一个注释,如果你简化检查git stats而不去git目录;

    ### create file
    sudo nano /usr/local/bin/gitstat
    
    ### put this in
    
    #!/usr/bin/env bash
    
    dir=$1
    
    if [[ $dir == "" ]]; then
        echo "Directory is required!"
        exit
    fi
    
    echo "Git stat for '$dir'."
    
    git --git-dir=$dir/.git --work-tree=$dir diff --stat
    
    ### give exec perm
    sudo chmod +x /usr/local/bin/gitstat
    

    并调用那个简单的脚本: gitstat /path/to/foo-project . 你也可以在 foo-project 中使用_872137_,所以如果你总是使用控制台而不是gui,那么假设比 git status -sgit diff --statgit diff --stat HEAD 短 .

    积分:

相关问题