คำถามติดแท็ก diff

การกระทำของการระบุความแตกต่างระหว่างสองไฟล์ขึ้นไปเพื่อสนับสนุนกิจกรรมการพัฒนาซอฟต์แวร์ต่าง ๆ (การติดตามบั๊กการสร้างแพทช์, ... )

14
วิธีการทำให้ diff ทำงานเหมือน git-diff
git diffผมชอบการแสดงผลการจัดรูปแบบของ สีและ+/ การ-แทนค่าของการเปลี่ยนแปลงระหว่างบรรทัดง่ายต่อการอ่านมากกว่า GNU ฉันสามารถรันgit diffโดยใช้การ--no-indexตั้งค่าสถานะภายนอก repo คอมไพล์และทำงานได้ดี แต่ก็ดูเหมือนจะหายไป--excludeตัวเลือกสำหรับการยกเว้นแฟ้มหรือไดเรกทอรีย่อยจาก diffrecursive มีวิธีที่ดีที่สุดของทั้งสองโลกหรือไม่? (ตัวเลือกสีและ+/ -รูปแบบของgit diffและ--excludeตัวเลือกของ GNU diff) ฉันได้ทดลองใช้colordiffแต่ฉันยังคงชอบรูปแบบผลลัพธ์ของgit diff
148 git  diff  git-diff 

6
แตกต่างเอาต์พุตจากสองโปรแกรมโดยไม่มีไฟล์ชั่วคราว
ว่าฉันมีมากเกินไปโปรแกรมaและbที่ฉันสามารถทำงานด้วยและ./a./b เป็นไปได้หรือไม่ที่จะกระจายเอาท์พุทโดยไม่ต้องเขียนลงไฟล์ชั่วคราวก่อน?
145 bash  file  diff 

3
คุณจะแตกต่างสองท่อใน Bash ได้อย่างไร
คุณจะแตกต่างสองท่อได้อย่างไรโดยไม่ต้องใช้ไฟล์ชั่วคราวใน Bash สมมติว่าคุณมีท่อคำสั่งสองท่อ: foo | bar baz | quux และคุณต้องการค้นหาdiffผลลัพธ์ของมัน ทางออกหนึ่งที่เห็นได้ชัดคือ: foo | bar > /tmp/a baz | quux > /tmp/b diff /tmp/a /tmp/b เป็นไปได้ไหมที่จะไม่ใช้ไฟล์ชั่วคราวใน Bash? คุณสามารถกำจัดไฟล์ชั่วคราวหนึ่งไฟล์โดยการไพพ์ในไพพ์ไลน์ใดไฟล์หนึ่งเพื่อ diff: foo | bar > /tmp/a baz | quux | diff /tmp/a - แต่คุณไม่สามารถท่อทั้งสองแยกเป็น diff พร้อมกัน (อย่างน้อยก็ในลักษณะที่ไม่ชัดเจน) มีเคล็ดลับที่ฉลาดเกี่ยวกับ/dev/fdการทำเช่นนี้โดยไม่ใช้ไฟล์ชั่วคราวหรือไม่?
143 bash  diff  pipeline 

8
ฉันสามารถทำให้ git รู้จักไฟล์ UTF-16 เป็นข้อความได้หรือไม่?
ฉันกำลังติดตามไฟล์เครื่องเสมือนพีซีเสมือน (* .vmc) ในคอมไพล์และหลังจากทำการเปลี่ยนแปลงคอมไพล์ระบุว่าไฟล์เป็นไบนารีและจะไม่แตกต่างกันสำหรับฉัน ฉันค้นพบว่าไฟล์ถูกเข้ารหัสใน UTF-16 สามารถสอนให้คอมไพล์ยอมรับว่าไฟล์นี้เป็นข้อความและจัดการได้อย่างเหมาะสมหรือไม่? ฉันใช้คอมไพล์ภายใต้ Cygwin โดยมี core.autocrlf ตั้งค่าเป็นเท็จ ฉันสามารถใช้ mSysGit หรือ git ภายใต้ UNIX หากจำเป็น


13
เน้นความแตกต่างระหว่างสองสายใน PHP
วิธีที่ง่ายที่สุดในการเน้นความแตกต่างระหว่างสองสตริงใน PHP คืออะไร? ฉันกำลังคิดตามบรรทัดของหน้าประวัติการแก้ไขสแต็คโอเวอร์โฟลว์ที่ข้อความใหม่เป็นสีเขียวและข้อความที่ลบออกเป็นสีแดง หากมีฟังก์ชั่นหรือคลาสใด ๆ ที่เขียนไว้ล่วงหน้าจะเหมาะที่สุด
136 php  string  diff  word-diff 

20
ฉันจะใช้โปรแกรมปะแก้ diff บน Windows ได้อย่างไร
มีโปรแกรมมากมายที่สามารถสร้าง patch ที่แตกต่างกันได้ แต่ฉันมีเวลาพยายามที่จะใช้มัน ฉันพยายามแจกจ่ายโปรแกรมแก้ไขและฉันได้รับคำถามจากผู้ใช้เกี่ยวกับวิธีใช้งาน ดังนั้นฉันจึงพยายามคิดออกเองและพบว่าฉันไม่มีเงื่อนงำและเครื่องมือส่วนใหญ่ที่ฉันพบคือบรรทัดคำสั่ง (ฉันสามารถจัดการบรรทัดคำสั่งได้ แต่ผู้คนจำนวนมากจะหายไปโดยไม่มี GUI ที่ดีและเป็นมิตรดังนั้นสิ่งเหล่านี้จึงไม่ดีสำหรับจุดประสงค์นี้) ฉันลองใช้ TortoiseSVN ฉันมีแพทช์ที่ฉันต้องการสมัคร ฉันคลิกขวาที่แพทช์และมีตัวเลือกภายใต้เมนูย่อย TortoiseSVN ที่ระบุว่า "ใช้แพตช์" ทั้งหมดนี้ก็คือดึงหน้าต่างว่างขึ้นมา ดังนั้นฉันจึงลองกดปุ่ม Open มันมีสองตัวเลือก: ผสานและใช้ diff แบบรวม (แพทช์อยู่ในรูปแบบ diff แบบรวมโชคดี) แต่ตัวเลือกการใช้ที่เรียบง่ายไม่ทำงาน: มันขอแพทช์และโฟลเดอร์ อย่างใดก็ลืมที่จะขอไฟล์ที่จะใช้แพทช์! TortoiseSVN เพียงธรรมดาจึงไม่ทำงาน มียูทิลิตีที่ใช้ Windows GUI ที่จะทำการปะและไฟล์และใช้อย่างถูกต้องหรือไม่? แก้ไข: ดูคำตอบจนถึงขณะนี้ดูเหมือนว่าเต่าจะทำถูกต้องหากเป็นไฟล์ที่มีรุ่นแล้ว นั่นไม่ใช่กรณีที่นี่ ฉันต้องสามารถใช้โปรแกรมปะแก้กับไฟล์ที่ไม่ได้มาจากที่เก็บ SVN ฉันเพิ่งลองใช้ Tortoise เพราะฉันรู้ว่า SVN ใช้ diffs และต้องรู้วิธีสร้างและนำไปใช้
136 windows  diff  gnu  patch 

6
จะทำอย่างไรให้ git แตกต่างกับไฟล์ที่ย้าย / เปลี่ยนชื่อ?
ฉันย้ายไฟล์โดยใช้git mv. ตอนนี้ฉันต้องการสร้างความแตกต่างในไฟล์ใหม่เพื่อเปรียบเทียบกับไฟล์เก่า (ด้วยชื่อเก่าตอนนี้ไม่มีอยู่จริง) ฉันต้องทำอย่างไร
128 git  diff  file-rename  mv 

7
ฉันจะเห็นภาพความแตกต่างของแต่ละอักขระในไฟล์ diff แบบรวมได้อย่างไร
git format-patchบอกว่าผมจะได้รับแพทช์ที่สร้างขึ้นด้วย ไฟล์นี้มีความแตกต่างแบบรวมกับข้อมูลเมตาบางอย่าง ถ้าฉันเปิดไฟล์ใน Vim ฉันจะเห็นว่าบรรทัดใดถูกแก้ไข แต่ฉันไม่เห็นว่าอักขระใดในบรรทัดที่เปลี่ยนแปลงแตกต่างกัน มีใครรู้วิธี (ใน Vim หรือซอฟต์แวร์ฟรีอื่น ๆ ที่ทำงานบน Ubuntu) เพื่อให้เห็นภาพความแตกต่างของแต่ละอักขระหรือไม่? vimdiff a bตัวอย่างที่เคาน์เตอร์ที่แตกต่างต่อตัวละครคือมองเห็นคือเมื่อการดำเนินการ อัปเดตศ. 12 พ.ย. 22:36:23 UTC 2010 diffpatch มีประโยชน์สำหรับสถานการณ์ที่คุณกำลังทำงานกับไฟล์เดียว อัปเดตพฤ. 16 มิ.ย. 17:56:10 UTC 2559 ตรวจสอบdiff ไฮไลท์ในการคอมไพล์ 2.9 สคริปต์นี้ไม่ว่าสิ่งที่ผมเดิมที่กำลังมองหา
122 git  vim  diff  patch 

4
แตกต่างสองแท็บในเป็นกลุ่ม
สถานการณ์: ฉันได้เปิด Vim และวางข้อความบางส่วน ฉันเปิดแท็บที่สอง:tabeและวางข้อความอื่นในนั้น เป้าหมาย: ฉันต้องการแท็บที่สามที่มีผลลัพธ์เทียบเท่ากับการเขียนทั้งสองข้อความลงในไฟล์และเปิดด้วยvimdiff. สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถหาได้คือ "แตกต่างกันระหว่างบัฟเฟอร์ปัจจุบันกับไฟล์" แต่ไม่diffได้รับบัฟเฟอร์ที่เปิดอยู่ แต่ไม่ได้บันทึกสองรายการ
121 vim  diff  tabs  vimdiff  buffer 

2
ฉันจะแสดงความแตกต่างระหว่างการแก้ไขเฉพาะสองรายการในการโค่นล้มได้อย่างไร
ฉันใช้ Subversion ผ่านอินเทอร์เฟซบรรทัดคำสั่ง Linux ฉันต้องการเห็นความแตกต่างระหว่างการแก้ไข 11390 และ 8979 ของไฟล์เฉพาะที่เรียกว่าfSupplierModel.phpในเทอร์มินัลของฉัน ฉันจะทำเช่นนั้นได้อย่างไร?
120 svn  diff 

11
ฉันจะรับความแตกต่างระหว่างการกระทำทั้งหมดที่เกิดขึ้นระหว่างสองวันที่กับ Git ได้อย่างไร
หรือแค่การกระทำทั้งหมดที่เกิดขึ้นระหว่างวันที่สองวัน? ใน SVN คุณสามารถทำสิ่งต่างๆเช่น svn diff -r{date}:{date} จะทำ! ฉันไม่พบ Git ที่เทียบเท่ากับสิ่งนี้ โดยเฉพาะอย่างยิ่งฉันกำลังมองหาการเขียนสคริปต์เพื่อส่งอีเมลรายวันพร้อมรหัสทั้งหมดที่ตกลงไว้ในวันนั้นและโดยใคร
117 git  diff  git-diff  git-log 

6
วิธีรับ git ที่แตกต่างด้วยบริบททั้งหมด?
วิธีสร้างแพทช์ที่เหมาะสำหรับการตรวจสอบในเบ้าหลอม? git diff branch master --no-prefix > patch สิ่งนี้สร้างบริบทเพียง 3 บรรทัด ดังนั้นฉันจึงทำสิ่งต่อไปนี้ git diff --unified=2000 branch master --no-prefix > patch หวังว่าไฟล์ทั้งหมดจะมีน้อยกว่า 2,000 บรรทัด มีวิธีบอกให้ git รวมบรรทัดทั้งหมดในไฟล์สำหรับ patch โดยไม่ต้องระบุบรรทัดสูงสุดหรือไม่?
115 git  diff  git-diff 

5
กรองคอมไพล์แตกต่างกันไปตามประเภทของการเปลี่ยนแปลง
มีวิธี จำกัด เฉพาะgit diffไฟล์ที่เปลี่ยนแปลงหรือไม่? ฉันต้องการเห็นความแตกต่างระหว่างสองคอมมิต แต่ไม่รวมพา ธ ที่ไม่มีอยู่ในอันใดอันหนึ่ง (เพิ่มเติม / ลบ) Perl one-liner ต่อไปนี้แสดงให้เห็นถึงสิ่งที่ฉันต้องการมากที่สุด: git diff master.. | perl -lnwe 'print unless /^(new|deleted) file/../^diff/ and not /^diff/' แต่จะทิ้งdiff --git a/path b/pathเส้นสำหรับไฟล์ที่ถูกลบใหม่หรือ นอกจากนี้มันจะดีกว่ามากถ้าฉันไม่ต้องแยกวิเคราะห์ (เช่นกันจะล้มเหลวหากก้อนใดมีสิ่งที่ตรงกัน / ^ diff / เป็นต้น) อีกทางเลือกหนึ่งที่ฉันลองคือ: git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | …
115 git  diff 


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