linux shell:判斷git工作文件夾是否乾淨(clean)
- 2019 年 10 月 5 日
- 筆記
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/10km/article/details/100689481
git diff
如果你不關注未納入版本控制的文件(untracked)的文件,使用git diff
就可以判斷git工作文件夾是否乾淨,如果是乾淨的,git diff
將沒有輸出,否則輸出修改的文件的差異
#!/bin/bash if [[ -n $(git diff --stat) ]] then echo 'dirty' else echo 'clean' fi
如果覺得判斷字符串是否為空的[[ ]]
條件判斷語句寫得太麻煩,配合 --quiet
選項還可以更簡單使程序的返回代碼(EXIT CODE)來判斷
git diff --quiet || echo 'dirty'
但是,前面第一句話就說了,git diff
只是比較已經納入版本控制的文件被修改的差異,如果git工作文件夾有新加入的文件,git diff
是不關注的,這種情況下,git diff
依然會認為文件夾是乾淨的(clean).
git status
如果你同樣關注git 文件夾中是否有未納入版本控制的文件,那麼 git status
是更妥善的辦法,使用 git status -s
命令輸出當前狀態,如果git 文件夾是乾淨的(也沒有untracked文件),則不輸出任何內容,否則顯示改變或增加的文件列表。所以我們可以使用類似下面這樣的表達式來判斷git 文件夾是否乾淨。
$ [[ -z $(git status -s) ]] || echo 'modified/untracked'