Bagaimana membandingkan dua file yang tidak di repo menggunakan git

114

Saya ingin membandingkan dua file css yang tidak ada di repositori git mana pun. Apakah ada fungsi seperti itu di git?

Cedric Reichenbach
sumber
Bagaimana jika saya ingin menggunakan, katakanlah, --patiencebendera? Apakah Anda tahu diff (1) yang bisa melakukan itu?
SamB
Anda harus menerima jawaban Kyle Burton.
BrodieG

Jawaban:

214

gitDiff lebih fungsional daripada unix standar diff. Saya sering ingin melakukan ini dan karena pertanyaan ini mendapat peringkat tinggi di google, saya ingin jawaban ini muncul.

Pertanyaan ini: Bagaimana cara menggunakan di git diff --color-wordsluar repositori Git?

Menunjukkan bagaimana menggunakan git untuk menyebarkan berkas yang setidaknya salah satunya tidak ada dalam repositori dengan menggunakan --no-index:

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

Tidak masalah mana yang dilacak oleh git dan mana yang tidak - salah satu atau keduanya tidak dapat dilacak, misalnya:

$ 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

Warnanya tidak bisa ditampilkan di sini jadi saya memisahkan perubahan dengan pipa di contoh.

Kyle Burton
sumber
14
Jika Anda ingin perilaku ini default, Anda dapat menambahkan alias ke .bashrcfile Anda (atau apa pun yang Anda gunakan):alias diff="git diff --no-index"
mengimbangi
1
FYI: Pada Git untuk Windows ada bug (# 2123) yang "--no-index" tidak dihormati. Ini telah diperbaiki di Git untuk Windows v2.21.0 (26 Februari 2019).
StackzOfZtuff
Apa arti baris "index 6b10c7c..70f036c 100644"? Saya membandingkan 2 biner, mereka berbeda, tetapi itu adalah satu-satunya baris dengan perbedaan ...
Lukas Salich
hai @LukasSalich sepertinya format baris itu mungkin didokumentasikan oleh git (misalnya: git-scm.com/docs/diff-format ) git's diff tidak mencoba untuk membedakan biner afaik, jadi saya menebak baris itu berarti mereka berbeda , dua SHA tempat perubahan diidentifikasi dan kemudian izin file.
Kyle Burton
3

diff -u

akan memberikan keluaran konteks terpadu yang mirip dengan git's diff.

james
sumber
1
Namun, itu tidak mewarnai bagus atau menggunakan pager.
Xiong Chiamiov
Itu juga tidak mengizinkan kata yang bagus diff, baik ( git diff --word-diff).
Stefan van den Akker
0

Cukup gunakan perintah diff:

diff file1.ext file2.ext
edwardmp
sumber
2
Hmkay, saya mencoba ini tetapi menurut saya, hasilnya tidak masuk akal ... Mungkin saya salah ...
Cedric Reichenbach
Anda dapat menjalankan beberapa alat GUI yang akan memberikan tampilan yang lebih baik, seperti gvimdiff, kompare atau serupa
Eugene Sajine