Git

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

  • April 8, 2022

我希望檢測暫存文件是否有未暫存的更改,並將其添加到預送出掛鉤。

例如,當輸出是這樣的時候,我應該能夠檢測到 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

如果您使用短狀態,暫存內容顯示M在第一列,非暫存內容顯示M在第二列。因此,可以通過以下方式檢測具有分階段和非分階段更改的文件

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

引用自:https://unix.stackexchange.com/questions/698493