लक्ष्य एक अस्पष्ट स्थिति प्राप्त करना है जिसे एक शेल कमांड में मूल्यांकन किया जा सकता है।
मैंने कोशिश की, git status
लेकिन यह हमेशा 0 रिटर्न देता है, भले ही इसके लिए कोई वस्तु हो।
git status
echo $? #this is always 0
मेरे पास एक विचार है लेकिन मुझे लगता है कि यह एक बुरा विचार है।
if [ git status | grep -i -c "[a-z]"> 2 ];
then
code for change...
else
code for nothing change...
fi
कोई अन्य तरीका?
निम्नलिखित समाधान के साथ अपडेट करें, मार्क लॉन्गेयर की पोस्ट देखें
मैंने यह कोशिश की लेकिन यह एक समस्या का कारण बनता है।
if [ -z $(git status --porcelain) ];
then
echo "IT IS CLEAN"
else
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
echo git status
fi
मुझे निम्नलिखित त्रुटि मिलती है [: ??: binary operator expected
अब, मैं उस आदमी को देख रहा हूं और कोशिश करता हूं कि वह अंतर को अलग कर दे।
================= मेरी आशा के लिए कोड, और बेहतर जवाब की उम्मीद ======================
#if [ `git status | grep -i -c "$"` -lt 3 ];
# change to below code,although the above code is simple, but I think it is not strict logical
if [ `git diff --cached --exit-code HEAD^ > /dev/null && (git ls-files --other --exclude-standard --directory | grep -c -v '/$')` ];
then
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
exit 1
else
exit 0
fi
$(git status --porcelain)
, जैसा कि मैंने आपको बताया था!
$(git status --porcelain)
। इसके अलावा, यदि आप अपने संदेश में विस्मयादिबोधक चिह्न लगाना चाहते हैं, तो आपको दोहरे उद्धरण चिह्नों के बजाय एकल उद्धरणों का उपयोग करने की आवश्यकता होगी - अर्थात इसकेecho 'PLEASE COMMIT YOUR CHANGE FIRST!!!'
बजाय होना चाहिए