อัปเดต 2:
ฉันไม่แน่ใจว่าทำไมผู้คนถึงบ่นเกี่ยวกับคำตอบนี้ดูเหมือนว่าจะทำงานได้ดีกับฉันสำหรับไฟล์ที่ไม่มีการใช้งานคุณสามารถเพิ่ม-u
ค่าสถานะได้
คำสั่งเต็มจะกลายเป็น git stash --keep-index -u
และนี่คือตัวอย่างข้อมูลจากความgit-stash
ช่วยเหลือ
หากใช้ตัวเลือก --keep-index การเปลี่ยนแปลงทั้งหมดที่เพิ่มลงในดัชนีแล้วจะไม่เสียหาย
หากใช้ตัวเลือก --include-untracked ไฟล์ที่ไม่ได้ติดตามทั้งหมดจะถูกซ่อนไว้จากนั้นจึงล้างข้อมูลด้วย git clean ทำให้ไดเร็กทอรีการทำงานอยู่ในสถานะที่สะอาดมาก หากใช้ตัวเลือก --all แทนไฟล์ที่ละเว้นจะถูกซ่อนและล้างข้อมูลเพิ่มเติมจากไฟล์ที่ไม่ได้ติดตาม
และนี่คือ gif ของลักษณะ:
อัปเดต:
แม้ว่านี่จะเป็นคำตอบที่เลือก แต่ก็มีหลายคนชี้ให้เห็นว่า [คำตอบด้านล่าง] (https://stackoverflow.com/a/34681302/292408) เป็นคำตอบที่ถูกต้องฉันขอแนะนำให้ตรวจสอบ
ฉันทดสอบคำตอบอีกครั้งในวันนี้ (31/1/2020) กับเวอร์ชัน git 2.24.0
และฉันยังเชื่อว่าถูกต้องฉันได้เพิ่มบันทึกเล็ก ๆ ด้านบนเกี่ยวกับไฟล์ที่ไม่ได้ติดตาม หากคุณคิดว่ามันใช้งานไม่ได้โปรดระบุเวอร์ชันคอมไพล์ของคุณด้วย
คำตอบเก่า :
หากใช้--keep-index
ตัวเลือกนี้การเปลี่ยนแปลงทั้งหมดที่เพิ่มลงในดัชนีจะไม่เสียหาย:
git stash --keep-index
จากเอกสารของgit-stash
:
การทดสอบการกระทำบางส่วน
คุณสามารถใช้git stash save --keep-index
เมื่อคุณต้องการทำการคอมมิตสองรายการขึ้นไปจากการเปลี่ยนแปลงในแผนผังงานและคุณต้องการทดสอบการเปลี่ยนแปลงแต่ละรายการก่อนที่จะดำเนินการ:
# ... hack hack hack ...
$ git add --patch foo # add just first part to the index
$ git stash save --keep-index # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part' # commit fully tested change
$ git stash pop # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'
แต่หากคุณต้องการตรวจสอบการเปลี่ยนแปลงทีละขั้นด้วยสายตาเท่านั้นคุณสามารถลองdifftool
:
git difftool --cached
-k
ตัวเลือก) หรือยุ่งยากในการใช้