ओपी का सवाल अब 9 साल से ज्यादा पुराना है। मुझे नहीं पता man git-statusकि तब क्या कहा गया था, लेकिन यहाँ यह अब क्या कहता है:
--porcelain[=<version>]
Give the output in an easy-to-parse format for scripts. This is similar to the
short output, but will remain stable across Git versions and regardless of user
configuration. See below for details.
The version parameter is used to specify the format version. This is optional and
defaults to the original version v1 format.
इससे पता चलता है कि --porcelainपरिवर्तन के लिए रेपो की स्थिति का परीक्षण करने के लिए तर्क अच्छी तरह से अनुकूल है।
ओपी के सवाल को गलत बताया, "क्या किसी प्रकार की बूलियन जांच है अगर पिछले प्रतिबद्ध के बाद से परिवर्तन हुए हैं, या मैं वास्तव में परीक्षण कैसे कर सकता हूं अगर मेरे स्थानीय भंडार में नए बदलाव हैं?"
मुझे नहीं लगता कि प्रतिbash बूलियन डेटा प्रकार हैं , लेकिन यह काफी करीब हो सकता है:
[ -z "`git status --porcelain`" ] && echo "NULL-NO DIFFS" || echo "DIFFS EXIST"
यह if-then-elseएक स्क्रिप्ट के लिए एक फॉर्म के रूप में फिर से कास्ट किया जा सकता है , या जैसा कि निष्पादित किया जा सकता है- gm रेपो फोल्डर में रहते हुए CLI है । अन्यथा, -Cब्याज के रेपो के लिए एक पथ कल्पना के साथ विकल्प का उपयोग करें :
git -C ~/path/to/MyGitRepo status --porcelain
परिशिष्ट:
- कुछ लोग सलाह देते हैं कि जिन
-u, --untracked-fileफाइलों को अनदेखा करना चाहते हैं उन पर रिपोर्टिंग स्थिति से बचने के लिए विकल्प का उपयोग करें । ध्यान दें कि यह एक दुर्भाग्यपूर्ण साइड-इफ़ेक्ट के साथ आता है : नई जोड़ी गई फाइलें या तो स्टेटस नहीं होती हैं। विकल्प कुछ स्थितियों में उपयोगी है , लेकिन उपयोग करने से पहले सावधानी से विचार करें।
git status?