คำถามของ OP มีอายุมากกว่า 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โต้แย้งนั้นเหมาะสมกับการทดสอบสถานะของธุรกรรมซื้อคืนสำหรับการเปลี่ยนแปลง
เขียนคำถามของ OP ว่า"มีบูลีนตรวจสอบบ้างไหมว่ามีการเปลี่ยนแปลงตั้งแต่การคอมมิทครั้งล่าสุดหรือจะทดสอบได้อย่างไรว่ามีการเปลี่ยนแปลงใหม่ในที่เก็บโลคอลของฉันหรือไม่"
ฉันไม่คิดว่าbashมีประเภทข้อมูลบูลีนต่อ seแต่อาจใกล้พอ:
[ -z "`git status --porcelain`" ] && echo "NULL-NO DIFFS" || echo "DIFFS EXIST"
นี้จะเป็นอีกครั้งหล่อเป็นif-then-elseรูปแบบสำหรับสคริปต์หรือดำเนินการตามที่เป็น FM CLI ในขณะที่ในคอมไพล์ repo โฟลเดอร์ มิฉะนั้นให้ใช้-Cตัวเลือกที่มีข้อมูลจำเพาะของเส้นทางไปยัง repo ที่น่าสนใจ:
git -C ~/path/to/MyGitRepo status --porcelain
ภาคผนวก:
- บางคนแนะนำให้ใช้
-u, --untracked-fileตัวเลือกในการหลีกเลี่ยงสถานะการรายงานในไฟล์ที่ต้องการละเว้น หมายเหตุสิ่งนี้มาพร้อมกับผลข้างเคียงที่โชคร้าย: ไฟล์ที่เพิ่งเพิ่มเข้ามาจะไม่ได้รับสถานะเช่นกัน ตัวเลือกมีประโยชน์ในบางสถานการณ์แต่ควรพิจารณาอย่างรอบคอบก่อนใช้
git status?