Git - 查找具有未暂存更改的暂存文件

Git - 查找具有未暂存更改的暂存文件

我希望检测暂存文件是否有未暂存的更改,并将其添加到预提交挂钩中。

例如,当输出是这样的时,我应该能够检测到 README.md 有未暂存的更改。

❯ git status

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   README.md

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   README.md
    modified:   foo.txt

我能找到的最好的解决方案是将暂存和未暂存文件的列表写入文件,然后使用comm

git diff --name-only > /tmp/unstaged.txt
git diff --name-only --staged > /tmp/staged.txt
comm /tmp/unstaged.txt /tmp/staged.txt

答案1

如果您使用短状态,则暂存内容将显示M在第一列中,非暂存内容将显示M在第二列中。因此,可以通过以下方式检测具有分阶段和非分阶段更改的文件

git status -s | awk '/MM / { print $2 }'

相关内容