การอ่านคำถามอีกครั้งดูเหมือนว่าคุณต้องการคืนค่าการเปลี่ยนแปลงที่อยู่ในแผนผังการทำงานของคุณและไม่ใช่การเปลี่ยนแปลงที่ได้กระทำไปก่อนหน้านี้ แต่คำตอบอื่น ๆ บางคำทำให้ดูเหมือนว่าการอ่านของฉันอาจผิด คุณช่วยอธิบายได้ไหม
หากการเปลี่ยนแปลงนั้นอยู่ในสำเนาการทำงานของคุณวิธีที่ง่ายที่สุดในการทำเช่นนี้คือการเปลี่ยนแปลงขั้นตอนที่คุณต้องการเก็บไว้:
git add -i <file>
จากนั้นทิ้งการเปลี่ยนแปลงที่คุณไม่ต้องการเก็บไว้โดยดูที่เวอร์ชันดัชนี:
git checkout -- <file>
จากนั้นยกเลิกการเปลี่ยนแปลงหากคุณยังไม่ต้องการให้จัดทำ:
git reset -- <file>
สูตรนี้เปลี่ยนการเปลี่ยนแปลงที่เลือกไว้เป็นไฟล์ (หรือไฟล์ที่คุณระบุ) เท่านั้นและจะไม่สร้างการผูกมัดชั่วคราวใด ๆ ที่จำเป็นต้องเปลี่ยนกลับ
หากคุณต้องการเลือกใช้เฉพาะการเปลี่ยนแปลงบางอย่างที่เกิดขึ้นในการคอมมิชชันก่อนหน้าคุณสามารถรีเซ็ตไฟล์เป็นสถานะที่คอมมิทก่อนหน้านี้ก่อน:
git reset <commit_before_first_unwanted_change> -- <file>
จากนั้นคุณสามารถติดตามสูตรก่อนหน้าของgit add -i <file>
ขั้นตอนการเปลี่ยนแปลงเหล่านั้นที่คุณต้องการเก็บgit checkout -- <file>
ทิ้งการเปลี่ยนแปลงที่ไม่ต้องการและgit reset -- <file>
' ไม่เปลี่ยน' การเปลี่ยนแปลง