ฉันเพิ่งทำ
git commit -m "blah"
จากนั้นฉันเพิ่มไฟล์บางไฟล์ฉันจะย้อนกลับและลบสิ่งที่อยู่ในไฟล์ปัจจุบันของฉันที่ยังไม่ได้เพิ่ม / คอมมิตได้อย่างไร
ฉันเพิ่งทำ
git commit -m "blah"
จากนั้นฉันเพิ่มไฟล์บางไฟล์ฉันจะย้อนกลับและลบสิ่งที่อยู่ในไฟล์ปัจจุบันของฉันที่ยังไม่ได้เพิ่ม / คอมมิตได้อย่างไร
คำตอบ:
Caveat Emptor - คำสั่งทำลายล้างข้างหน้า
การบรรเทาทุกข์ - git reflog สามารถช่วยคุณได้หากคุณต้องการ
1) UNDOการเปลี่ยนแปลงไฟล์ในท้องถิ่นและKEEPกระทำครั้งสุดท้ายของคุณ
git reset --hard
2) ยกเลิกการเปลี่ยนแปลงไฟล์ในเครื่องและลบคอมมิตล่าสุดของคุณ
git reset --hard HEAD^
3) KEEPการเปลี่ยนแปลงไฟล์ในท้องถิ่นและลบกระทำครั้งสุดท้ายของคุณ
git reset --soft HEAD^
หากคุณต้องการลบเนื้อหาและไฟล์ที่เพิ่งเพิ่มใหม่ซึ่งมีการจัดเตรียมไว้แล้ว (เพิ่มลงในดัชนีแล้ว) ให้ใช้:
git reset --hard
หากคุณต้องการลบคอมมิตล่าสุดของคุณด้วย (คืออันที่มีข้อความ "blah") ให้ใช้:
git reset --hard HEAD^
ในการลบไฟล์ที่ไม่ได้ติดตาม (ดังนั้นไฟล์ใหม่ที่ยังไม่ได้เพิ่มลงในดัชนี) และโฟลเดอร์ให้ใช้:
git clean --force -d
git reset --hard จะบังคับให้ไดเร็กทอรีการทำงานกลับไปที่คอมมิตสุดท้ายและลบไฟล์ใหม่ / ที่เปลี่ยนแปลง
คุณสามารถย้อนกลับการคอมมิตโดยใช้git revert HEAD^สำหรับการเปลี่ยนกลับเป็นคอมมิตถัดไป คุณยังสามารถระบุการคอมมิตเพื่อเปลี่ยนกลับโดยใช้ id แทน HEAD ^
หากคุณต้องการยกเลิกการคอมมิตสุดท้ายให้ใช้สิ่งนี้:
git reset HEAD~
ทำงานอย่างมีเสน่ห์สำหรับฉัน
วิธีที่เข้าใจผิดได้ง่ายๆในการยกเลิกการเปลี่ยนแปลงไฟล์ภายในเครื่องเนื่องจากการคอมมิตสุดท้ายคือการวางไว้ในสาขาใหม่:
git branch changes
git checkout changes
git add .
git commit
ซึ่งจะทำให้การเปลี่ยนแปลงในสาขาใหม่ กลับไปที่สาขาเดิมเพื่อค้นหากลับไปที่คอมมิตสุดท้าย:
git checkout master
สาขาใหม่เป็นสถานที่ที่ดีในการฝึกฝนวิธีต่างๆในการเปลี่ยนกลับโดยไม่เสี่ยงที่จะทำให้สาขาเดิมเสียหาย