คำตอบส่วนใหญ่ที่นี่ต้องใช้ไดเรกทอรีการทำงานที่สะอาดและหลายขั้นตอนแบบโต้ตอบ (ไม่ดีสำหรับการเขียนสคริปต์) หรือไม่ได้ผลสำหรับทุกกรณีเช่นการรวมที่ผ่านมาซึ่งนำการเปลี่ยนแปลงที่โดดเด่นบางอย่างมาสู่สาขาเป้าหมายของคุณ เหมือนกัน.
หากต้องการดูสิ่งที่จะเปลี่ยนแปลงในmaster
สาขาอย่างแท้จริงหากคุณรวมdevelop
เข้าไปในตอนนี้:
git merge-tree $(git merge-base master develop) master develop
เนื่องจากมันเป็นคำสั่งที่ใช้กับระบบประปาจึงไม่เดาว่าคุณหมายถึงอะไรคุณต้องชัดเจน นอกจากนี้ยังไม่ทำให้สีของเอาต์พุตหรือใช้เพจเจอร์ของคุณดังนั้นคำสั่งเต็มรูปแบบจะเป็น:
git merge-tree $(git merge-base master develop) master develop | colordiff | less -R
- https://git.seveas.net/previewing-a-merge-result.html
(ขอบคุณ David Normington สำหรับลิงก์)
PS:
หากคุณจะได้รับความขัดแย้งผสานพวกเขาจะปรากฏขึ้นพร้อมเครื่องหมายความขัดแย้งตามปกติในผลลัพธ์เช่น:
$ git merge-tree $(git merge-base a b ) a b
added in both
our 100644 78981922613b2afb6025042ff6bd878ac1994e85 a
their 100644 61780798228d17af2d34fce4cfbdf35556832472 a
@@ -1 +1,5 @@
+<<<<<<< .our
a
+=======
+b
+>>>>>>> .their
User @dreftymac สร้างจุดที่ดี: สิ่งนี้ทำให้ไม่เหมาะสำหรับการเขียนสคริปต์เนื่องจากคุณไม่สามารถตรวจจับสิ่งนั้นได้จากรหัสสถานะ เครื่องหมายความขัดแย้งอาจแตกต่างกันมากขึ้นอยู่กับสถานการณ์ (ลบแล้วเทียบกับแก้ไข ฯลฯ ) ซึ่งทำให้ grep ยากเกินไปเช่นกัน ระวัง.
git merge
และgit reset --keep HEAD@{1}
ถ้าฉันไม่ชอบผลลัพธ์