เหตุใดชุมชน Git จึงไม่สนใจความแตกต่างแบบเคียงข้างกัน [ปิด]


33

ฉันเคยใช้ Windows, SVN, Tortoise SVN และ Beyond Compare มันเป็นการผสมผสานที่ยอดเยี่ยมสำหรับการทำรีวิวโค้ด

ตอนนี้ฉันใช้ OSX และ Git ฉันจัดการเพื่อรวมสคริปต์ bash เข้าด้วยกันพร้อมกับ Gitx และ DiffMerge เพื่อหาวิธีแก้ปัญหาที่แทบจะไม่ได้รับการยอมรับ

ฉันงงกับการตั้งค่านี้และสิ่งที่คล้ายกันมานานกว่าหนึ่งปี ฉันได้ลองใช้ Github diff Viewer และ Gitx diff Viewer แล้วดังนั้นฉันจึงไม่ได้ให้โอกาสพวกเขา

มีคนฉลาดมากมายที่ทำสิ่งดีๆกับ Git เหตุใดจึงไม่เคียงข้างกันกับตัวเลือกในการดูไฟล์ทั้งหมด กับคนที่ใช้ทั้งคู่ฉันไม่เคยได้ยินใครที่ชอบ +/- ดูดีกว่าอย่างน้อยก็เป็นมากกว่าการตรวจสอบด่วน


คุณสามารถตั้งค่า TortoiseGit ให้ใช้Beyond เปรียบเทียบสำหรับ diiffs ซึ่งในกรณีนี้คุณจะเห็นไฟล์ทั้งหมดแบบเคียงข้างกัน (อย่างไรก็ตามฉันไม่เคยทดสอบการตั้งค่านี้เป็นการส่วนตัว
wildpeaks

1
เพียงความคิดเห็นฉันใช้ในการใช้ Windows, SVN และ Beyond เปรียบเทียบ แต่ตอนนี้ฉันใช้ Ubuntu + Git โชคดีที่ฉันยังสามารถใช้เพื่อนเก่าของฉันได้เปรียบเทียบ มันใช้งานได้ดีบน Ubuntu และในขณะที่ไม่ฟรีมันคุ้มค่าเงินทุกฉัน :) ขออภัยฉันไม่สามารถเสนอวิธีแก้ปัญหาให้คุณใน OSX แต่ไม่ต้องการให้คนอื่นคิดว่า Beyond Compare เป็นโซลูชันสำหรับ Windows เท่านั้น
David S

7 ปีต่อมาฉันยังคงรู้สึกแบบนี้อยู่บ้าง แต่ฉันได้ฝึกฝนตัวเองให้ชอบความแตกต่างแบบอินไลน์ แต่เป็นกรณีที่ซับซ้อนที่สุด จากนั้นฉันก็แบ่งเพื่อนเก่าของฉันออกไป
Kyle Heironimus

คำตอบ:


19

ฉันไม่สามารถพูดกับ Linus เกี่ยวกับเรื่องนี้ได้ แต่วิธีการที่ git จัดการกับ difftools นั้นเป็นสิ่งที่ไม่บริสุทธิ์และพูดในเชิงปรัชญา git ทำสิ่งที่มันทำได้ดีมากและใช้เครื่องมือภายนอกสำหรับทุกสิ่งรวมถึงการรวมและการรวมที่ซับซ้อนยิ่งขึ้น

ฉันใช้ DiffMerge กับ git บน OS X ด้วยและฉันก็ไม่ต้องหันไปใช้ bash shell ใด ๆ มันยุ่งยาก แต่ฉันกำหนดการตั้งค่า difftool และ mergetool ของคอมไพล์เพื่อเรียก DiffMerge โดยตรงและตอนนี้ฉันสามารถดู diffs และแก้ไขข้อขัดแย้งผสานในเครื่องมือของบุคคลภายนอกที่ยอดเยี่ยม

นี่คือการกำหนดค่าของฉัน:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
ไม่เป็นไร แต่เมื่อมีการเปลี่ยนแปลงหลายไฟล์ฉันจะดูทีละไฟล์ตามลำดับที่คอมไพล์ตัดสินใจที่จะแสดงให้ฉันเห็น ฉันต้องปิดอันหนึ่งเพื่อเปิดอีกอัน นั่นเป็นเหตุผลที่ฉันยังใช้ bash script เมื่อฉันต้องการดูไฟล์ทั้งหมดในครั้งเดียว
Kyle Heironimus

ฉันไม่รู้ว่าสิ่งที่คุณคาดหวังที่จะเห็นในแง่ของ "มองพวกเขาทั้งหมดในครั้งเดียว" git diff --statแต่ตรวจสอบ ให้รายชื่อกราฟิกที่ดีของไฟล์ที่ถูกเปลี่ยนทั้งหมดพร้อมจำนวนบรรทัดที่เปลี่ยนแปลง
Dan Ray

คิดอีกเล็กน้อยเกี่ยวกับสิ่งนี้ "เปิดทั้งหมดในครั้งเดียว" สิ่ง ... คุณสามารถแก้ไข / ดูไฟล์ได้ครั้งละกี่ไฟล์? ฉันสามารถดูไฟล์เดียวในช่วงเวลาที่กำหนด ฉันเดาว่าฉันแค่ไม่ได้สิ่งที่คุณต้องการจะทำ
Dan Ray

2
ตัวอย่างที่ดีที่สุดคือ TortoiseSVN พร้อมกับ Beyond Compare ตัวอย่างเช่นหากผู้ร่วมงานครั้งล่าสุดของฉันมีการเปลี่ยนแปลง 3 ไฟล์มันจะแสดงสามไฟล์ในรายการ ฉันสามารถคลิกที่ไฟล์ที่เหมาะสมเพื่อดูความแตกต่าง ฉันยังสามารถเปิดหน้าต่างแยกกัน 3 หน้าต่างแต่ละห้องมีไฟล์ต่างกัน จากนั้นฉันสามารถย้อนกลับไปมาระหว่างพวกเขาได้ตามต้องการเพื่อตรวจสอบการเปลี่ยนแปลง โดยทั่วไปจะช่วยให้คุณดูการเปลี่ยนแปลงทั้งหมดในเงื่อนไขของคุณเองไม่ใช่ลำดับตาม vcs ของคุณ
Kyle Heironimus

1
คุณก็รู้ว่าคุณควรจะตรวจสอบหอคอย มันเป็น Mac git gui ที่ดีที่สุดเท่าที่ฉันเคยเห็นมาและทำในสิ่งที่คุณกำลังพูดถึง git-tower.com
Dan Ray

16

คุณจะสังเกตเห็นว่า SVN นั้นไม่ได้เสนอโซลูชันแบบคู่ขนาน สิ่งที่คุณระบุไว้คือเครื่องมือของบุคคลที่สาม เช่นเดียวกับสิ่งต่าง ๆ ใน git สิ่งนี้สามารถกำหนดค่าได้อย่างพิเศษและมีเครื่องมือที่ยอดเยี่ยมรองรับได้ทันที คุณมีการตั้งค่าmergetoolหรือไม่? ถ้าไม่คุณควร git difftoolถ้าคุณทำลอง จากนั้นดูที่หน้า manสำหรับตัวเลือกการกำหนดค่า

ฉันใช้ KDiff3 เป็น mergetool ของฉันเนื่องจากเป็นเครื่องมือข้ามแพลตฟอร์มที่ดีและไม่มีการกำหนดค่าเพิ่มเติมgit difftoolทำสิ่งที่คุณขออย่างแน่นอน


2
ที่จริงแล้วมันก็โอเคกับ difftool แต่ก็ยังล้มเหลวเมื่อดูไฟล์จำนวนมาก พวกเขาจะต้องเปิดทีละครั้ง เพื่อเปิดพวกเขาทั้งหมดในครั้งเดียวฉันต้องทำแฮ็คสคริปต์แฮช
Kyle Heironimus

9

มันเป็นปรัชญา * ระวัง ผู้คนจำนวนมากที่ใช้เครื่องมือเหล่านี้ใช้เวลามากในสถานี เทอร์มินัลไม่ต้องการให้เราขยับมือจากคีย์บอร์ดไปยังเมาส์ ฉันรู้ว่าฉันชอบสไตล์ +/- กับเครื่องมือ diff / merge ภาพเพราะส่วนใหญ่ฉันสนใจเฉพาะความแตกต่าง ฉันสนใจเกี่ยวกับ 3-4 บรรทัดรอบ ๆ การเปลี่ยนแปลงและการเปลี่ยนแปลงเอง อะไรเพิ่มเติมคือข้อมูลพิเศษที่ไม่ได้ช่วยฉันจริงๆ

ส่วนใหญ่จะใช้ในการดูสิ่งที่เปลี่ยนแปลงไปอย่างรวดเร็ว ไม่ต้องอ่านรหัส

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


1
vimdiff ก็โอเคมันมักจะแสดงให้คุณเห็นชิ้นส่วนเท่านั้น ฉันใช้เพื่อการรวม ไม่จำเป็นต้องใช้เม้าส์
ทางเลือก

8
คุณเคยดูการเปลี่ยนแปลงของเพื่อนร่วมงานหรือไม่ ไปยังพื้นที่ของรหัสที่คุณไม่คุ้นเคยกับ? ฉันทำตลอดเวลาและฉันไม่สามารถจินตนาการถึงการทำมันโดยไม่ต้องเคียงข้างกันรหัสทั้งหมด สำหรับฉัน +/- นั้นยอดเยี่ยมสำหรับการเปลี่ยนแปลงที่ทำโดยเป็น แต่ไม่ใช่สำหรับคนอื่น ไม่ได้บอกว่าคุณคิดผิดหรือเลวหรืออะไรก็ตาม แค่ถาม.
Kyle Heironimus

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

0

จากการใช้งานส่วนตัวของฉันฉันคิดว่าคำตอบนั้นส่วนใหญ่จะต่างกันสั้นพอที่จะไม่สำคัญ

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

ฉันใช้งานgit diffเกือบเฉพาะช่วงเวลาที่กำหนดรหัสเพื่อคอมมิท เมื่อเป็นเช่นนั้นความแตกต่างก็เล็กพอและไม่นานมานี้ที่ฉันไม่จำเป็นต้องเห็นบริบทเพื่อจดจำสิ่งที่เกิดขึ้น

เครื่องมือตรวจสอบโค้ดของฉันเป็นตัวเลือกตัวกรองคำหรือเครื่องมือที่รวมกับ IDE ซึ่งเป็นภาษาที่รับรู้บริบท ฉันคิดว่าขั้นตอนการดึงคำขอของ GitHub นั้นแย่มากสำหรับการตรวจสอบโค้ดส่วนใหญ่เป็นเพราะมันแสดงให้เห็นถึงความแตกต่างแบบรวมและไม่ใช่แบบเคียงข้างกัน

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