ทำอย่างไรถึงจะได้ผู้ปกครองของการรวมกันคอมไพล์?


140

คำสั่ง git บางคำรับพาเรนต์เป็นการแก้ไข อื่น ๆ (เช่นgit revert) เป็นหมายเลขพาเรนต์ วิธีรับผู้ปกครองทั้งสองกรณี ฉันไม่ต้องการใช้คำสั่งบันทึกแบบกราฟิกเพราะมักจะต้องเลื่อนต้นไม้ลงเพื่อค้นหาพาเรนต์ที่สอง

คำตอบ:


179

ง่าย ๆ ที่git log <hash>เรียกว่าการรวมการกระทำแสดงให้เห็นว่าตัวย่อของผู้ปกครอง:

 $ git log -1 395f65d
 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

git เอาต์พุตผู้ปกครองตามจำนวนของพวกเขา: แฮชแรก (ซ้ายสุด) ใช้สำหรับพาเรนต์แรกและอื่น ๆ

หากสิ่งที่คุณต้องการเป็นเพียงแค่แฮชตัวเลือกที่เทียบเท่าสองตัวคือ:

$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>

git rev-list ยังสามารถแสดงแฮชของผู้ปกครองได้แม้ว่ามันจะแสดงรายการแฮชสำหรับการกระทำ:

$ git rev-list --parents -n 1 <commit>

หากคุณต้องการตรวจสอบผู้ปกครองคุณสามารถดูพวกเขาโดยตรงกับกะรัตเป็น<commit>^1และ<commit>^2เช่น:

git show <commit>^1

นี่เป็นการพูดคุย สำหรับผสานปลาหมึกคุณสามารถอ้างถึง n TH<commit>^nผู้ปกครองเป็น คุณสามารถอ้างถึงผู้ปกครองทุกคนด้วย<commit>^@แม้ว่าสิ่งนี้จะไม่ทำงานเมื่อจำเป็นต้องมีการมอบสิทธิ์ครั้งเดียว คำต่อท้ายเพิ่มเติมสามารถปรากฏขึ้นหลังจากที่ n THไวยากรณ์ปกครอง (เช่น<commit>^2^, <commit>^2^@) ในขณะที่พวกเขาไม่สามารถหลัง^@( <commit>^@^ไม่ถูกต้อง) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์นี้อ่านrev-parseman page


1
ตอบคำถามของฉันเอง: ผลลัพธ์ของ 'git rev-list --parents -n 1 <somehash>' คือ: <somehash> <parent1> <parent2> คือผู้ปกครองเป็นหนึ่งหมายเลข
mikemaccana

นอกจากนี้คุณยังสามารถใช้คอมไพล์พ่อแม่github.com/danielribeiro/dotfiles/blob/master/bin/git-parents เพียงวางไว้ในเส้นทางของคุณและโทรหาผู้ปกครองของ $ git <commit> (<commit> ค่าเริ่มต้นไปที่ HEAD)
Daniel Ribeiro

@ jefromi ฉันต้องการจริงๆ "โปรดทราบว่าส่วนบันทึกผลลัพธ์ปกติจะแสดง ... " ที่จะอยู่ด้านบนของคำตอบของคุณ :)
Adam Monsen

3
git logและgit showเอาท์พุทสิ่งที่แตกต่างกันมากเมื่อมีผู้ปกครองเพียงคนเดียว ชอบgit logถ้าคุณต้องการความมั่นคง
Noel Yap

git (v2.17.1)คำตอบนี้ไม่ทำงานบนเครื่องของฉันกับอูบุนตู ฉันไม่เห็นMergeไฟล์ในgit log -1เอาต์พุต
mja

29

ต่อไปนี้เป็นวิธีที่ง่ายที่สุดที่ฉันพบเพื่อดูผู้ปกครองของการรวม

git show --pretty=raw 3706454

14
git cat-file -p 3706454 เป็นเหมือนกัน แต่แม้สั้น :)
sabgenton

1
ทั้งสองอย่างนี้มีประโยชน์มาก!
tecknut

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