ฉันจะยกเลิกการชำระเงินในคอมไพล์ได้อย่างไร


134

ฉันเพิ่งตรวจสอบการกระทำก่อนหน้านี้จาก git repo ในพื้นที่ของฉัน ฉันไม่ได้ทำการเปลี่ยนแปลงใด ๆ ฉันแค่ดูมัน ตอนนี้ฉันต้องการกลับไปที่คอมมิตล่าสุด - ฉันจะทำอย่างไร

คำสั่งที่แน่นอนที่ฉันใช้เพื่อตรวจสอบ:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

ตอนนี้เมื่อฉันพิมพ์ git log ที่ด้านบนฉันเห็นสิ่งนี้เช็คเอาต์คอมมิต แต่ไม่มีการคอมมิตในภายหลัง ฉันลบสิ่งเหล่านั้นโดยไม่ได้ตั้งใจหรือไม่?


ฉันคิดว่าคุณเห็นผิดวิธี: เราชำระเงินไปยังสาขา (หัว) ไม่ได้ทำทีละสาขา
Z. Khullah

คำตอบ:


184

ลองสิ่งนี้ก่อน:

git checkout master

(หากคุณอยู่สาขาอื่นที่ไม่ใช่masterให้ใช้ชื่อสาขาที่นั่นแทน)

หากไม่ได้ผลให้ลอง ...

สำหรับไฟล์เดียว:

git checkout HEAD /path/to/file

สำหรับสำเนาการทำงานที่เก็บทั้งหมด:

git reset --hard HEAD

และหากไม่ได้ผลคุณสามารถดูใน reflog เพื่อค้นหา SHA หัวเก่าของคุณและรีเซ็ตเป็น:

git reflog
git reset --hard <sha from reflog>

HEAD เป็นชื่อที่ชี้ไปยังการกระทำล่าสุดในสาขาปัจจุบันของคุณเสมอ


แต่ฉันจะดูคำมั่นสัญญาของฉันเพื่อตัดสินใจว่าจะให้แฮช SHA1 ใด
Yuval Karmi

1
คุณไม่ - คุณพิมพ์HEADคำต่อคำ Git รู้อยู่แล้วว่าHEADหมายถึงอะไร อย่างไรก็ตามหากคุณต้องการให้ SHA1 แทนจริงๆคุณสามารถใช้git logเพื่อดูบันทึกการคอมมิต
อำพัน

เมื่อฉันเรียกใช้git reset --hard HEADมันจะนำฉันกลับไปที่การตรวจสอบการกระทำนั้น ... ฉันจะโพสต์คำสั่งที่แน่นอนที่ฉันใช้เพื่อตรวจสอบ
Yuval Karmi

(ถ้าคุณอยากรู้คุณสามารถพิมพ์git rev-parse HEADและดูว่ามันให้ SHA1 ที่ตรงกับการกระทำล่าสุดของคุณ)
แอมเบอร์

ฉันได้เพิ่มตัวเลือกใหม่สองตัวเลือกด้านบนลองใช้ (ตามลำดับ - ลองใช้เวอร์ชันชำระเงินก่อน)
อำพัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.