เหตุผลหลักจากสิ่งที่ฉันเห็นมีดังนี้:
- GitHub UI สำหรับการรวมคำขอดึงในขณะนี้ (ตุลาคม 2015) ไม่อนุญาตให้คุณแก้ไขบรรทัดแรกของข้อความส่งข้อความบังคับให้เป็น
Merge pull request #123 from joebloggs/fix-snafoo
- GitHub UI สำหรับการสืบค้นประวัติการส่งมอบในปัจจุบันไม่อนุญาตให้คุณดูประวัติของสาขาจาก
--first-parent
มุมมอง
- GitHub UI สำหรับการดูตำหนิบนไฟล์ในขณะนี้ไม่อนุญาตให้คุณดูตำหนิของไฟล์พร้อม
--first-parent
มุมมอง (โปรดทราบว่านี่ถูกแก้ไขใน Git 2.6.2 เท่านั้นดังนั้นเราสามารถให้อภัย GitHub ที่ไม่มี สามารถใช้ได้)
ดังนั้นเมื่อคุณรวมทั้งสามสถานการณ์ข้างต้นเข้าด้วยกันคุณจะได้รับสถานการณ์ที่ไม่ได้ถูกยืนยันว่าคอมมิทที่ถูกรวมเข้าด้วยกันดูน่าเกลียดจาก GitHub UI
ประวัติของคุณที่มีการกระทำที่ถูกแบนจะดูเหมือนว่า
1256556316... Merge pull request #423 from jrandom/add-slideshows
7hgf8978g9... Added new slideshow feature
56556316ad... Merge pull request #324 from ahacker/fix-android-display
787g8fgf78... Hotfix for android display issue
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
9080gf6567... Implemented pop-up to select language
ในขณะที่ไม่มีการแบนประวัติศาสตร์จะดูเหมือน
1256556316... Merge pull request #423 from jrandom/add-slideshows
7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
56556316ad... Merge pull request #324 from ahacker/fix-android-display
787g8fgf78... hotfix for #5849564648
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test
เมื่อคุณมีจำนวนมากของการกระทำในการประชาสัมพันธ์การติดตามที่มีการเปลี่ยนแปลงมาจะกลายเป็นบิตของฝันร้ายที่ถ้าคุณ จำกัด ตัวเองให้ใช้ UI
ตัวอย่างเช่นคุณพบว่าตัวชี้โมฆะถูกยกเลิกการอ้างอิงบางแห่งในไฟล์ ... ดังนั้นคุณจึงพูดว่า "ใครทำสิ่งนี้และเมื่อใด จากนั้นคุณเดินไปที่มุมมองการตำหนิใน GitHub UI และคุณเห็นว่าบรรทัดนั้นเปลี่ยนไป789fdfffdf
... "โอ้เดี๋ยวก่อนเดี๋ยวก่อนบรรทัดนั้นเพิ่งเปลี่ยนการเยื้องเข้าไปเพื่อให้พอดีกับส่วนที่เหลือของรหัส" ดังนั้นตอนนี้คุณต้องไปยังสถานะต้นไม้สำหรับไฟล์นั้นในพาเรนต์ที่คอมมิทและกลับมาใหม่ หน้าตำหนิ ... ในที่สุดคุณก็พบว่ามีการกระทำ ... มันเป็นการกระทำจาก 6 เดือนที่ผ่านมา ... "โอ้ **** สิ่งนี้อาจส่งผลกระทบต่อผู้ใช้เป็นเวลา 6 เดือน" คุณพูด ... อา แต่เดี๋ยวก่อน เป็นจริงในคำขอดึงและถูกรวมเข้าด้วยกันเมื่อวานนี้และยังไม่มีใครตัดการเปิดตัว ... "คุณคนที่รวมการกระทำโดยไม่ต้องบีบประวัติ" เป็นเสียงร้องที่มักจะได้ยินหลังจากการสำรวจโบราณคดีรหัสประมาณ 2 หรือ 3 ผ่าน GitHub UI
ตอนนี้ให้เราพิจารณาว่ามันใช้งานได้อย่างไรถ้าคุณใช้บรรทัดคำสั่ง Git (และสุดยอด 2.6.2 ซึ่งมีการแก้ไขgit blame --first-parent
)
- หากคุณใช้บรรทัดคำสั่ง Git คุณจะสามารถควบคุมข้อความยืนยันการรวมได้อย่างสมบูรณ์และดังนั้นการกระทำที่ผสานอาจมีบรรทัดสรุปที่ดี
ดังนั้นประวัติความเป็นมาของเราก็จะดูเหมือน
$ git log
1256556316... #423 Added new slideshow feature
7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
56556316ad... #324 Hotfix for android display issue
787g8fgf78... hotfix for #5849564648
f56556316e... #28 Implemented pop-up to select language
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test
แต่เราก็สามารถทำได้
$ git log --first-parent
1256556316... #423 Added new slideshow feature
56556316ad... #324 Hotfix for android display issue
f56556316e... #28 Implemented pop-up to select language
(ในคำอื่น ๆ : Git CLI ช่วยให้คุณมีเค้กของคุณและกินมันเกินไป)
ตอนนี้เมื่อเราพบปัญหาตัวชี้โมฆะ ... เราเพิ่งใช้git blame --first-parent -w dodgy-file.c
และเราจะได้รับการยอมรับทันทีที่การอ้างอิงตัวชี้โมฆะถูกนำมาใช้กับสาขาหลักโดยไม่สนใจการเปลี่ยนแปลงช่องว่างอย่างง่าย
แน่นอนถ้าคุณทำการผสานโดยใช้ GitHub UI แล้วgit log --first-parent
ก็ต้องขอบคุณมากสำหรับ GitHub ที่บังคับให้บรรทัดแรกของข้อความยืนยันการรวม:
1256556316... Merge pull request #423 from jrandom/add-slideshows
56556316ad... Merge pull request #324 from ahacker/fix-android-display
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
ดังนั้นการตัดเรื่องสั้นให้สั้น:
GitHub UI (ต.ค. 2558) มีข้อบกพร่องหลายประการเกี่ยวกับวิธีการรวมคำขอดึงวิธีแสดงประวัติการกระทำและวิธีการที่ข้อมูลการตำหนิ วิธีที่ดีที่สุดในปัจจุบันในการแฮ็กข้อบกพร่องเหล่านี้ใน GitHub UI คือการขอให้ผู้คนสควอชกระทำของพวกเขาก่อนที่จะรวม
Git CLI ไม่มีปัญหาเหล่านี้และคุณสามารถเลือกมุมมองที่คุณต้องการดูได้อย่างง่ายดายเพื่อให้คุณสามารถค้นพบสาเหตุที่ทำให้มีการเปลี่ยนแปลงโดยเฉพาะอย่างยิ่ง (โดยดูที่ประวัติความเป็นมาของคำสั่งที่ยังไม่ผ่านการคัด) และ เห็นความมุ่งมั่นบีบได้อย่างมีประสิทธิภาพ
โพสต์สคริปต์
เหตุผลสุดท้ายที่มักจะอ้างถึงในการแบนด์คอมมิชชันคือการทำให้การ backport ง่ายขึ้น ... ถ้าคุณมีพอร์ตคอมมิทเพียงพอร์ตเดียว (เช่นสควอชคอมมิชชัน) ดังนั้นมันจึงง่ายต่อการเลือกเชอร์รี่ ...
ถ้าคุณกำลังดูประวัติคอมไพล์ด้วยgit log --first-parent
คุณก็สามารถเลือกการรวมเชอร์รี่ได้ คนส่วนใหญ่สับสนกับการเก็บเชอร์รี่เพราะคุณต้องระบุ-m N
ตัวเลือกแต่ถ้าคุณได้รับการยอมรับจากgit log --first-parent
นั้นคุณก็รู้ว่ามันเป็นผู้ปกครองคนแรกที่คุณต้องการติดตามดังนั้นมันจะเป็นgit cherry-pick -m 1 ...