วิธีเปรียบเทียบสองไฟล์ที่ไม่ได้อยู่ใน repo โดยใช้ git


114

ฉันต้องการเปรียบเทียบไฟล์ css สองไฟล์ที่ไม่ได้อยู่ในที่เก็บ git ใด ๆ มีฟังก์ชันดังกล่าวในคอมไพล์หรือไม่?


ถ้าฉันต้องการใช้พูดว่า--patienceธง? คุณรู้จักความแตกต่าง (1)ที่สามารถทำได้หรือไม่?
SamB

คุณควรยอมรับคำตอบของ Kyle Burton
BrodieG

คำตอบ:


214

gitdiffต่างก็คือการทำงานมากขึ้นกว่ามาตรฐานยูนิกซ์ ฉันมักจะต้องการทำสิ่งนี้และเนื่องจากคำถามนี้ติดอันดับสูงใน Google ฉันจึงต้องการให้คำตอบนี้ปรากฏขึ้น

คำถามนี้: จะใช้git diff --color-wordsนอกที่เก็บ Git ได้อย่างไร?

แสดงวิธีใช้ git เพื่อ diff ไฟล์โดยที่อย่างน้อยหนึ่งไฟล์ไม่ได้อยู่ในที่เก็บโดยใช้--no-index:

git diff --no-index file1.txt file2.txt

ไม่สำคัญว่าจะมีการติดตามโดยคอมไพล์ใดและไม่สำคัญ - หนึ่งหรือทั้งสองสามารถยกเลิกการติดตามได้เช่น:

$ date > x
$ sleep 2
$ date > y
$ git diff --color-words --no-index x y
diff --git a/x b/y
index 6b10c7c..70f036c 100644
--- a/x
+++ a/y
@@ -1 + 1 @@
Wed Jun 10 10:57:45|10:57:47 EDT 2013

ไม่สามารถแสดงสีที่นี่ได้ดังนั้นฉันจึงแยกการเปลี่ยนแปลงด้วยไปป์ในตัวอย่าง


14
หากคุณต้องการเริ่มต้นการทำงานนี้คุณสามารถเพิ่มนามแฝงที่คุณ.bashrcไฟล์ (หรืออะไรก็ตามที่คุณใช้):alias diff="git diff --no-index"
counterbeing

1
FYI: บน Git สำหรับ Windows มีข้อผิดพลาด (# 2123)ที่ไม่เคารพ "--no-index" สิ่งนี้ได้รับการแก้ไขใน Git สำหรับ Windows v2.21.0 (26 กุมภาพันธ์ 2019)
StackzOfZtuff

row "index 6b10c7c..70f036c 100644" หมายความว่าอย่างไร ฉันกำลังเปรียบเทียบ 2 ไบนารีมันต่างกัน แต่นั่นเป็นแถวเดียวที่มีความแตกต่าง ...
Lukas Salich

สวัสดี @LukasSalich ดูเหมือนว่ารูปแบบบรรทัดนั้นอาจจัดทำเอกสารโดย git (เช่นgit-scm.com/docs/diff-format ) ความแตกต่างของ git ไม่ได้พยายามที่จะแตกต่างกันของไบนารีดังนั้นฉันเดาว่าบรรทัดนั้นหมายความว่าพวกเขาต่างกัน SHA สองตัวที่มีการระบุการเปลี่ยนแปลงและสิทธิ์ของไฟล์
Kyle Burton

3

diff -u

จะให้เอาต์พุตบริบทรวมที่คล้ายกันกับความแตกต่างของ git


1
อย่างไรก็ตามมันไม่ได้ทำสีที่สวยงามหรือใช้เพจเจอร์
Xiong Chiamiov

ไม่อนุญาตให้ใช้คำที่ดีต่างกัน ( git diff --word-diff)
Stefan van den Akker

0

เพียงใช้คำสั่ง diff:

diff file1.ext file2.ext

2
อืมฉันลองแล้ว แต่ในความคิดของฉันผลลัพธ์เป็นเพียงเรื่องไร้สาระ ... บางทีฉันอาจจะคิดผิด ...
Cedric Reichenbach

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