­

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'