เครื่องมือผสานการมองเห็นที่ดีที่สุดสำหรับ Git คืออะไร [ปิด]


599

เครื่องมือที่ดีที่สุดในการดูและแก้ไขการผสานใน Git คืออะไร ฉันต้องการรับมุมมองแบบสามทางด้วย "เหมือง", "ของพวกเขา" และ "บรรพบุรุษ" ในแผงแยกต่างหากและแผง "เอาท์พุท" ที่สี่

นอกจากนี้คำแนะนำสำหรับการเรียกใช้เครื่องมือดังกล่าวจะยอดเยี่ยม (ฉันยังไม่ได้คิดออกว่าจะเริ่ม kdiff3 ในลักษณะที่ไม่ทำให้ฉันมีข้อผิดพลาด)

ระบบปฏิบัติการของฉันคือ Ubuntu


15
"แต่ตอนนี้ไม่ได้รับอนุญาต" ใช่นั่นเป็นเหตุผลที่ฉันเกลียดชังสแต็คโฟลว์ในปัจจุบัน มันแห้งเกินไปและน่าเบื่อโดยไม่มีคำถามเหล่านั้น
István Ujj-Mészáros

17
มีไซต์ stackexchange ที่อนุญาตให้ใช้คำถามประเภทนี้หรือไม่ ถ้าไม่ควรมี ..
fzzylogic

16
ดูเหมือนว่าถึงเวลาแล้วสำหรับ Stack Overflow ใหม่ที่อนุญาตให้ใช้คำถามดังกล่าว เห็นได้ชัดว่าคำถามดังกล่าวเป็นคำถามที่มีค่าสำหรับคนจำนวนมากจนเป็นเรื่องง่ายที่จะปิดพวกเขา ฉันคิดว่าคุณได้ไปทำงานกับคณะกรรมการด้วยระบบราชการแล้ว คุณทำโพลในเรื่องนี้อย่างไรและดูว่า "ลูกค้า" ของคุณต้องการอะไร P
Piotr Owsiak


6
ปัญหา: ซอฟต์วอร์เรคไม่มีประโยชน์เพราะผู้เชี่ยวชาญอยู่ที่นี่ไม่ใช่ที่นั่น
reinierpost

คำตอบ:


337

Meldเป็นเครื่องมือ diff / merge ที่ผสานฟรีและโอเพนซอร์ส (UNIX / Linux, OSX, Windows)

นี่คือวิธีติดตั้งบน:


53
ใครเป็นผู้ที่สนใจเกี่ยวกับระบบปฏิบัติการที่ผู้เขียนดั้งเดิมใช้อยู่? คำถามนี้เป็นเรื่องที่น่าสนใจสำหรับทุกคนที่มองหามัน และความต่าง 3 ทางคือเมื่อคุณเห็น 4 บานพร้อมการทดสอบจริง ๆ ผสานฐาน / ท้องถิ่น / ระยะไกล / ผลลัพธ์
Evgeny

16
meldน่าเบื่อกับ diffs ซับซ้อนความสามารถในการเลือกตัวเลือกเช่นจะดีกว่าไม่ต้องด้วยตนเองคลิกที่ลูกศรที่ถูกต้องสำหรับทุกก้อนใหญ่ในchose b for all unresolved conflicts meldนอกจากนี้ความสามารถในการรวมลงในไฟล์เอาต์พุตที่เฉพาะเจาะจงแทนที่จะแก้ไขไฟล์อินพุตที่มีค่านั้นมีค่าสำหรับการสำรองข้อมูลจาก nerges ที่ล้มเหลว
Mark Booth

3
@naxa Meld มีโปรแกรมติดตั้ง Windows แล้ว: code.google.com/p/meld-installer
Roman

6
kdiff3 ให้คุณดู 4 ครั้งรวมได้เพียง 3 มุมมอง Meld ไม่ใช่เครื่องมือผสานที่แท้จริงมันเป็นเครื่องมือที่แตกต่างเนื่องจากไม่แสดงมุมมองเวอร์ชันพื้นฐาน
Akira Yamamoto

4
Meld เป็นเรื่องที่น่ากลัวโดยเฉพาะอย่างยิ่งสำหรับการรวม ไม่มีตัวเลือกในการ "โอนย้ายการเปลี่ยนแปลงที่ไม่ขัดแย้งกันโดยอัตโนมัติ" ทำให้ทุกการรวมเจ็บปวดอย่างน่ากลัว
Cerin

91

คุณสามารถกำหนดค่าเครื่องมือผสานของคุณเองเพื่อใช้กับ " git mergetool"

ตัวอย่าง:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

และในขณะที่คุณอยู่ที่นี่คุณสามารถตั้งค่าให้เป็น difftool สำหรับ " git difftool":

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

โปรดทราบว่าใน Unix / Linux คุณไม่ต้องการ$BASEให้แยกวิเคราะห์เป็นตัวแปรโดยเชลล์ของคุณ - มันควรจะปรากฏในไฟล์ ~ / .gitconfig ของคุณเพื่อให้มันทำงานได้


10
โปรดทราบว่าเนื่องจาก p4merge เป็นหนึ่งใน git mergetools ที่ได้รับการสนับสนุนอย่างเป็นทางการจึงไม่จำเป็นที่จะต้องโคลนด้วยเครื่องมือ ตัวแปร. cmd อีกต่อไป
Matt Ball

2
ตรวจสอบให้แน่ใจว่าคุณกำลังใช้ใบเสนอราคาที่ถูกต้อง: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck

64

Beyond เปรียบเทียบ 3ที่ชื่นชอบของฉันมีการผสานการทำงานในรุ่น Pro ข้อดีของการผสานคือให้คุณเห็นมุมมองทั้ง 4 มุมมอง: ฐาน, ซ้าย, ขวาและผลลัพธ์ที่ถูกผสาน มันค่อนข้างจะมองเห็นได้น้อยกว่า P4Vแต่มีวิธีมากกว่า WinDiff มันทำงานร่วมกับการควบคุมแหล่งที่มาจำนวนมากและทำงานบน Windows / Linux มันมีคุณสมบัติมากมายเช่นกฎขั้นสูง, รุ่น, การจัดตำแหน่งด้วยตนเอง ...

Perforce Visual Client ( P4V )เป็นเครื่องมือฟรีที่ให้หนึ่งในอินเทอร์เฟซที่ชัดเจนที่สุดสำหรับการผสาน (ดูภาพหน้าจอบางส่วน ) ทำงานบนแพลตฟอร์มหลักทั้งหมด disappointement หลักของฉันด้วยเครื่องมือที่เป็นชนิดของการ "อ่านอย่างเดียว" อินเตอร์เฟซ คุณไม่สามารถแก้ไขไฟล์ด้วยตนเองและคุณไม่สามารถจัดแนวได้เอง

PS: P4Merge รวมอยู่ใน P4V เพอร์ฟอร์ซพยายามทำให้เป็นเรื่องยากขึ้นเล็กน้อยหากต้องการใช้เครื่องมือโดยไม่มีไคลเอ็นต์

SourceGear Diff / Mergeอาจเป็นเครื่องมือฟรีตัวที่สองของฉัน ตรวจสอบว่าผสานสกรีนช็อตแล้วคุณจะเห็นว่ามีมุมมอง 3 อย่างน้อย


Meldเป็นเครื่องมือฟรีใหม่ที่ฉันชอบที่จะ SourceGear Diff / ผสาน : ตอนนี้ก็ยังทำงานบนแพลตฟอร์มมากที่สุด (Windows / Linux / Mac) กับประโยชน์ที่แตกต่างของการกำเนิดการสนับสนุนการควบคุมบางแหล่งเช่นGit ดังนั้นคุณสามารถมีประวัติแตกต่างกับไฟล์ทั้งหมดได้ง่ายกว่ามาก มุมมองการผสาน (ดูภาพหน้าจอ ) มีเพียง 3 บานหน้าต่างเช่นเดียวกับ SourceGear Diff สิ่งนี้ทำให้การรวมค่อนข้างยากขึ้นในกรณีที่ซับซ้อน

PS: ถ้ามีเครื่องมือหนึ่งวันที่สนับสนุนการดู 5 ครั้งการรวมกันนี้จะยอดเยี่ยมจริงๆเพราะถ้าคุณเลือกเชอร์รี่ที่มุ่งมั่นใน Git คุณจะไม่มีฐานเดียว แต่มีสองฐาน สองฐานสองการเปลี่ยนแปลงและหนึ่งที่เกิดขึ้นผสาน


7
Perforce Merge นั้นยอดเยี่ยม มันมีเครื่องมือผสาน 4 บานหน้าต่างซึ่งช่วยได้จริงๆ: คุณ, ของพวกเขา, ฐานร่วม, ใหม่
Gal

4
Google ใช้ P4 ด้วยเช่นกัน
Wernight

5
คุณสามารถติดตั้งแบบกำหนดเองเท่านั้น P4Merge โดยไม่ต้องใช้กำลัง
Dirk Bester

6
เวอร์ชันล่าสุดของ p4merge ไม่มีอินเตอร์เฟส "อ่านอย่างเดียว" คุณสามารถแก้ไขไฟล์ที่ผสานในบานหน้าต่างด้านล่าง
Ian Ni-Lewis

1
นี่เป็นคำตอบและการอภิปรายที่ยอดเยี่ยมจริงๆ ขอบคุณสำหรับการแชร์!
ทำเครื่องหมาย Good

44

ฉันได้ยินสิ่งดีๆเกี่ยวกับ kdiff3


4
+1: kdiff3 นั้นเหนือกว่า meld และได้รับการสนับสนุนโดย git
Mark Booth

3
kdiff3มีคุณสมบัติมากกว่านี้ แต่meldมี UI ที่ดีกว่า ในความคิดของฉันmeldจะดีกว่าสำหรับการรวมที่ง่ายซึ่งคุณสมบัติที่มีให้โดยmeldพอ อย่าลืมลองdiffuseด้วย
Mikko Rantalainen

kdiff3 ให้คุณดู 4 ครั้งรวมได้เพียง 3 มุมมอง Meld ไม่ใช่เครื่องมือผสานที่แท้จริงมันเป็นเครื่องมือที่แตกต่างเนื่องจากไม่แสดงมุมมองเวอร์ชันพื้นฐาน
Akira Yamamoto

43

เครื่องมือผสานภาพที่ฉันโปรดปรานคือSourceGear DiffMerge

  • ว่าง.
  • ข้ามแพลตฟอร์ม (Windows, OS X และ Linux)
  • Clean UI ภาพ
  • คุณลักษณะต่าง ๆ ที่คุณคาดหวัง (Diff, Merge, Folder Diff)
  • อินเตอร์เฟสบรรทัดคำสั่ง
  • แป้นพิมพ์ลัดที่ใช้งานได้

หน้าจอผู้ใช้


3
คุณกำหนดค่าให้ทำงานกับ git ได้อย่างไร
Ryan Lundy


2
ขอบคุณสำหรับการแนะนำให้ฉัน !! : D เครื่องมือนี้สะอาดและใช้เวลาในการติดตั้งและทำงานน้อยกว่า meld ฉันใช้เวลาครึ่งชั่วโมงในการพยายามติดตั้ง meld แต่อันนี้ฉันทำใน 5 นาที !!
om39a

2
หมายเหตุ: diffmerge ไม่ปรากฏว่ามีคุณลักษณะการรวม 3 ทิศทาง ฉันละทิ้งมันหลังจากลองมาสองสามสัปดาห์แล้วด้วยเหตุผลนั้น
StormeHawke

มันเป็นเครื่องมือที่ดีและยังสามารถเปรียบเทียบโฟลเดอร์ ปัญหาคือช้ามาก (MacBookPro 15 2014, MacOS Catalina)
emKaroly

33

vimdiff

เมื่อคุณได้เรียนรู้เป็นกลุ่ม (และ IMHO คุณควร), vimdiff เป็นเพียงแนวคิด orthogonal เล็ก ๆ น้อย ๆ ที่สวยงามในการเรียนรู้ ในการรับความช่วยเหลือออนไลน์เป็นกลุ่ม:

:help vimdiff 

คำถามนี้ครอบคลุมวิธีใช้: ฉันจะใช้ vimdiff เพื่อแก้ไขข้อขัดแย้งได้อย่างไร

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณติดอยู่ในยุคมืดของการใช้เมาส์และไฟล์ที่คุณผสานไม่ใหญ่มากฉันขอแนะนำให้รวม


<3 vimdiff, ฉันไม่สามารถหาวิธีโน้มน้าว svn เพื่อให้ฉันใช้เป็นเครื่องมือ 'ผสาน'
klokop

gvimdiff ยังทำงานได้ดีสำหรับวัตถุประสงค์นี้
new123456

2
การใช้ปลั๊กอินผู้ลี้ภัยทำให้ง่ายยิ่งขึ้น! vimcasts.org/episodes/ ......
Erik Westrup

หากมีเพียงวิธีการที่จะเห็นความแตกต่างระหว่างท้องถิ่น / ฐานและฐาน / ระยะไกลอย่างชัดเจน
Ciro Santilli 法轮功冠状病六四事件法轮功

24

คุณสามารถลองP4Merge

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

คุณสมบัติรวมถึง:

  • เน้นและแก้ไขความแตกต่างของไฟล์ข้อความ
  • เลือกที่จะรวมหรือละเว้นการสิ้นสุดบรรทัดหรือช่องว่างสีขาว
  • รับรู้อนุสัญญาสิ้นสุดบรรทัดสำหรับ Windows (CRLF), Mac (CR) และ Unix (LF)
  • ใช้พารามิเตอร์บรรทัดคำสั่งและเรียกใช้จากแอพพลิเคชั่นที่ไม่ใช่ Perforce
  • แสดงหมายเลขบรรทัดเมื่อทำการเปรียบเทียบและผสานไฟล์
  • ยกเว้นไฟล์ที่ถูกแก้ไขไม่ซ้ำใครหรือไม่เปลี่ยนแปลง
  • กรองไฟล์ตามชื่อหรือนามสกุล
  • จัดระเบียบสินทรัพย์ที่แก้ไขในลำดับชั้นของไฟล์ / โฟลเดอร์ที่คุ้นเคย
  • เปรียบเทียบ JPEG, GIF, TIFF, BMP และรูปแบบไฟล์อื่น ๆ
  • ขยายการใช้ Qt API
  • วางซ้อนภาพหรือแสดงแบบเคียงข้างกัน
  • เน้นความแตกต่างของภาพที่ซ้อน

ดีที่สุดที่ฉันเคยเห็น แก้ไขข้อขัดแย้งได้อย่างง่ายดายโดยเลือกการเปลี่ยนแปลงจากรายการมุมมองแบบสามทาง
chovy


แก้ไขลิงก์perforce.com/downloads/helix#clients
Al-Mothafar

เริ่มใช้งานได้ทันทีและใช้งานง่าย
ทรัพยากร

22

IntelliJ IDEAมีเครื่องมือการแก้ปัญหาข้อขัดแย้งผสานที่ซับซ้อนด้วย Resolve magic wand ซึ่งช่วยลดความยุ่งยากในการรวม:

ที่มา: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/


2
เครื่องมือผสานของ Idea นั้นยอดเยี่ยม มีให้บริการในรุ่นชุมชนของ Idea ซึ่งหมายความว่าคุณสามารถใช้ฟรีเป็นเครื่องมือผสานขั้นสูง - นี่คือสิ่งที่ฉันทำ (สำหรับกรณีส่วนใหญ่ฉันใช้ VSCode ที่ฉันใช้งานอยู่ VSCode ทำงานได้ค่อนข้างดีเช่นกันและบางครั้งก็ดีกว่า Idea แต่สำหรับกรณียาก ๆ 3-panels-layout ของพวกเขาเป็นเครื่องมือที่ดีที่สุดที่ฉันเคยเห็น
godblessstrawberry

ฉันเกลียดที่แถบเลื่อน 'ไฟล์หน้าร้อน' ไม่ได้อยู่ด้วยกัน! เหตุผลหลักที่ฉันชอบกระจาย!
anthony

16

การกระจายเป็นที่ชื่นชอบ แต่แน่นอนฉันลำเอียง :-) มันใช้งานง่ายมาก:

$ diffuse "mine" "output" "theirs"

การกระจายเป็นเครื่องมือผสานข้อความขนาดเล็กและเรียบง่ายที่เขียนด้วย Python ด้วย Diffuse คุณสามารถผสานแก้ไขและตรวจทานการเปลี่ยนแปลงในรหัสของคุณได้อย่างง่ายดาย กระจายเป็นซอฟต์แวร์ฟรี


2
ฉันชอบกระจายและฉันไม่ลำเอียง
jturcotte

2
@ Derrick Moser: diffuseดูดีมาก ฉันเพิ่งลองตอนนี้และมันก็ดีขึ้นกว่าkdiff3เดิม แต่ฉันพยายามใช้ด้วยgit mergetoolและจะเปิด 4 ไฟล์ถัดจากกัน (โลคัลผสานผลลัพธ์รีโมตฐาน) และหน้าจอของฉันไม่กว้างพอสำหรับเรื่องนั้น ฉันต้องเลื่อนแนวนอนหลายครั้ง kdiff3 จะแสดงเพียง 3 ตัวติดกันและผลลัพธ์ที่อยู่ครึ่งล่างของหน้าต่าง
yairchu

การกระจายมีตัวเลือกการผสานเพิ่มเติมเมื่อเปรียบเทียบกับการรวม (อนุญาตให้เข้าร่วมทั้งสองเวอร์ชันแทนที่จะเลือกหนึ่งตัวเลือก)
Audrius Meskauskas

diffuse ทำงานนอกกรอบบน windows สำหรับการเปรียบเทียบ 2 โฟลเดอร์กับ CVS repo กับ Git repo การรวมความขัดแย้งของ git merge ไฟล์ diff diff จะเปิดขึ้นในแท็บในหน้าต่างเดียว ฉันเปลี่ยนเป็นกระจาย (หลังจากใช้ emacs 'ediff (มีคุณสมบัติมากเกินไปมีประโยชน์ใน 90s)> vimdiff (การกดแป้นปลั๊กอินที่ซับซ้อน)> p4merge> araxis (กรรมสิทธิ์)> meld (ช้าเกินไป), tkdiff (เฉพาะ cvs)> kdiff3 (ดีเท่านั้น) , regex ที่ดีไม่ใช้คุณสมบัติ)> winmerge (ดี)> กระจาย (เร็วพกพาทำงานตามที่คาดไว้)) ในครั้งแรกที่ฉันพยายามกระจาย
mosh

จะเปลี่ยนภาษา GUI ใน Diffuse ได้อย่างไร
ซั


9

คุณสามารถเปลี่ยนเครื่องมือที่ใช้โดย mergetool คอมไพล์โดยผ่านหรือgit mergetool -t=<tool> --tool=<tool>การเปลี่ยนค่าเริ่มต้น (จาก vimdiff) git config merge.tool <tool>การใช้งาน



6

ดังนั้นสำหรับการรวมคอมไพล์คุณสามารถลอง:

  • DiffMergeเพื่อเปรียบเทียบและผสานไฟล์บน Windows, OS X และ Linux

    DiffMerge

  • Meldเป็นเครื่องมือ diff และผสานภาพ

    Meld เป็นเครื่องมือ diff และผสานการมองเห็น

  • KDiff3โปรแกรม diff และการผสาน) ซึ่งเปรียบเทียบหรือผสานไฟล์ข้อความ / dirs 2 หรือ 3
  • opendiff(ส่วนหนึ่งของเครื่องมือ Xcode บน MacOS) อรรถประโยชน์บรรทัดคำสั่งที่เปิดตัวแอพลิเคชัน FileMerge จาก Terminal เพื่อเปรียบเทียบไฟล์กราฟิกหรือไดเรกทอรีรวมทั้งการควบรวม

2
git config --global merge.tool opendiffทำงานได้ดีที่สุดสำหรับฉัน
James Matthew Mudgett

5

ฉันลองใช้เครื่องมือจำนวนมากที่กล่าวถึงที่นี่และไม่มีสิ่งใดในสิ่งที่ฉันกำลังมองหา

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

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

ฉันไม่ได้ใช้มันเป็นบรรณาธิการหรือ IDE อีกต่อไปเพียงแค่ทำงานกับคอมไพล์ ล้าง UI และตรงไปตรงมามากรวมถึงปรับแต่งได้สูง

  • คุณสามารถเริ่มจากบรรทัดคำสั่งและส่งไฟล์เดียวที่คุณต้องการเปิดหรือเพิ่มโฟลเดอร์โครงการของคุณ (git repo)

    • ฉันจะแนะนำผู้จัดการโครงการเป็นวิธีที่สะดวกมากในการสำรวจระหว่างโครงการโดยไม่ต้องเติมมุมมองแบบต้นไม้ของคุณ
  • ปัญหาเดียวที่ฉันมีคือการรีเฟรช - เมื่อทำงานกับคลังเก็บขนาดใหญ่อาจทำให้การอัปเดตการเปลี่ยนแปลงที่คุณทำนอกนั้นช้า ฉันเพิ่งปิดมันเมื่อฉันทำเสร็จแล้วเปิดใหม่อีกครั้งเมื่อฉันต้องการดูการเปลี่ยนแปลงของฉัน / กระทำอีกครั้ง คุณสามารถโหลดหน้าต่างใหม่ด้วย ctrl + shift + f5 ซึ่งใช้เวลาเพียงไม่กี่วินาที

และมันฟรีแน่นอน


3

ฉันใช้เครื่องมือต่าง ๆ เพื่อผสานและเปรียบเทียบ:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

สามารถเรียกกำปั้นโดย:

git difftool [BRANCH] -- [FILE or DIR]

git mergetoolที่สองเรียกว่าเมื่อคุณใช้



2

หากคุณใช้visual Studioเครื่องมือในตัวของ Team Explorer เป็นเครื่องมือที่ดีมากในการแก้ไขข้อขัดแย้งของคอมไพล์


0

gitx http://gitx.frim.nl/

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

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