แสดงการคอมมิตที่ทำโดยตรงกับสาขาโดยไม่สนใจการผสานใน Git


87

เมื่อใช้คอมไพล์มีวิธีแสดงคอมมิตที่ทำกับสาขาโดยไม่สนใจคอมมิตทั้งหมดที่เกิดจากการรวมหรือไม่

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

คำตอบ:


124

--no-merges

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

git log --no-merges --first-parent

มิฉะนั้นคุณอาจยกเว้นการคอมมิตจากสาขาที่มีชื่ออื่น ๆ ได้

git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3

หากคุณต้องการตรวจสอบการเปลี่ยนแปลงที่คุณกำลังจะรวมกลับเข้าไปในสาขาหลักสิ่งที่ง่ายที่สุดที่ต้องทำคือทำการรวมกับโคลนในเครื่องจากนั้นดูความแตกต่างกับพาเรนต์แรกก่อนที่จะเผยแพร่การผสาน


คำสั่งแรกนี้ยอดเยี่ยมใน "สาขาที่เหมาะสมต่อคุณลักษณะ" ( plus.google.com/109096274754593704906/posts/R4qkeyRadLR )
Adam Dymitruk

1
ดูเหมือนว่าฉันจะได้รับคำสั่งจากสาขานั้นเป็นส่วนใหญ่ แต่ก็ยังแสดงการกระทำที่ถูกดึงออกมาจากนาย เรามีสาขามากมายที่ไม่รวมสาขาอื่น ๆ จะไม่สามารถทำได้
Channel Cat

@ChannelCat ทำไมไม่เปลี่ยนฐานสาขาของคุณไปยังอีกสาขาหนึ่งแล้วการกระทำทั้งหมดจะสิ้นสุดลง?
Mark Ingram

7

คุณสามารถใช้git cherryสำหรับสิ่งนั้นมันจะพบว่าคุณคอมมิตที่ยังไม่ได้รวมเข้ากับต้นน้ำหรือคอมมิตที่อยู่ในสาขาหนึ่ง แต่ไม่ใช่อีกสาขาหนึ่ง ดังนั้นให้สองสาขาชื่อ "your-branch" และ "master":

git cherry -v your-branch master

จะนำเสนอรายการคอมมิตเทียบกับ id แพทช์ของพวกเขา:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake

คุณสามารถสังเกตได้ว่าการคอมมิตที่ขึ้นต้นด้วย "-" คือรายการที่ปรากฏในทั้งสองสาขาในขณะที่คำนำหน้าด้วย "+" จะใช้ได้เฉพาะในสาขาของคุณเท่านั้น

เป็นอีกทางเลือกหนึ่งที่คุณสามารถใช้:

git log --pretty=format:"%h %s" your-branch..master --no-merges

ซึ่งจะแสดงรายการการกระทำใน "สาขาของคุณ" ที่ยังไม่ปรากฏใน "master"


เนื่องจากการพยายามแก้ไขคำตอบของคุณถูกปฏิเสธฉันจะโพสต์ไว้ที่นี่: ในบรรทัดคอมไพล์สุดท้ายของคุณควรมีจุดสามจุดไม่ใช่สองจุดระหว่างชื่อของสาขา แบบนี้สาขาของคุณ ... master
vedranm

@vedranm คุณไม่จำเป็นต้องมี 3 จุดเพียงสองจุด ... แม้ว่า 3 จะทำงานในลักษณะเดียวกับที่ 2 ทำงานก็ตาม
Zzzach ...

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