พูดว่าคนอื่นสร้างแถบไว้ด้านบนของ foo แต่คุณสร้าง baz ในระหว่างนั้นและรวมเข้าด้วยกันให้ประวัติของ
$ git lola
* 2582152 (HEAD, master) ผสานสาขา 'otherguy'
| \
| * c7256de (otherguy) แถบ
* | b7e7176 baz
| /
* 9968f79 foo
หมายเหตุ: git lolaเป็นนามแฝงที่ไม่ได้มาตรฐาน แต่มีประโยชน์
ไม่มีลูกเต๋าด้วยgit revert
:
$ git ย้อนกลับ HEAD
ร้ายแรง: Commit 2582152 ... เป็นการรวมกัน แต่ไม่มีการกำหนดตัวเลือก -m
Charles Bailey ให้คำตอบที่ยอดเยี่ยมตามปกติ ใช้git revert
เหมือนใน
$ git ย้อนกลับ - ไม่แก้ไข -m 1 HEAD
[master e900aad] เปลี่ยนกลับ "รวมสาขา 'otherguy'"
มีการเปลี่ยนแปลง 0 ไฟล์, การแทรก 0 ครั้ง (+), การลบ 0 ครั้ง (-)
โหมดลบ 100644 บาร์
ลบbar
และสร้างประวัติของ
$ git lola
* e900aad (HEAD, master) เปลี่ยนกลับเป็น "รวมสาขา 'otherguy'"
* 2582152 รวมสาขา 'otherguy'
| \
| * c7256de (otherguy) แถบ
* | b7e7176 baz
| /
* 9968f79 foo
แต่ฉันสงสัยว่าคุณต้องการทิ้งการรวม:
$ git reset - ฮาร์ด HEAD ^
ตอนนี้ HEAD อยู่ที่ b7e7176 baz
$ git lola
* b7e7176 (HEAD, master) baz
| * c7256de (otherguy) แถบ
| /
* 9968f79 foo
ตามที่ระบุไว้ในgit rev-parse
คู่มือ
<rev>^
เช่น HEAD ^v1.5.1^0
ส่วนต่อท้ายของ^
พารามิเตอร์การแก้ไขหมายถึงพาเรนต์แรกของการคอมมิทวัตถุนั้น ^<n>
หมายถึงผู้ปกครองn -th ( เช่น <rev>^
เทียบเท่า<rev>^1
) ในฐานะกฎพิเศษ<rev>^0
หมายถึงการกระทำเองและใช้เมื่อ<rev>
เป็นชื่อวัตถุของวัตถุแท็กที่อ้างถึงวัตถุที่กระทำ
ดังนั้นก่อนที่จะอัญเชิญgit reset
, HEAD^
(หรือHEAD^1
) เป็น b7e7176 และHEAD^2
เป็น c7256de, เช่นตามลำดับผู้ปกครองครั้งแรกและครั้งที่สองของการผสานกระทำ
ระวังด้วยgit reset --hard
เพราะมันสามารถทำลายงานได้