เป้าหมายคือการได้รับสถานะที่ชัดเจนซึ่งสามารถประเมินได้ในคำสั่งเชลล์
ฉันพยายาม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
มีวิธีอื่นอีกไหม?
อัปเดตด้วยวิธีแก้ปัญหาต่อไปนี้ดูโพสต์ของ Mark Longair
ฉันลองสิ่งนี้ แต่มันทำให้เกิดปัญหา
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!!!'
แทน