Saya memiliki skrip yang berfungsi dengan baik di satu cabang dan rusak di yang lain. Saya ingin melihat dua versi secara berdampingan dan melihat apa yang berbeda. Apakah ada cara untuk melakukan ini?
Untuk lebih jelasnya saya tidak mencari alat bandingkan (saya menggunakan Beyond Compare). Saya sedang mencari perintah git diff yang akan memungkinkan saya untuk membandingkan versi master dengan versi cabang saya saat ini untuk melihat apa yang telah berubah. Saya tidak di tengah-tengah gabungan atau apa pun. Saya hanya ingin mengatakan sesuatu seperti
git diff mybranch/myfile.cs master/myfile.cs
git diff branch1 branch2 myfile.cs
. (Yang--
seharusnya tidak perlu lagi, karena hanya bisa memakan dua argumen revisi.)--
kesalahan. Umum dan mudah untuk membuat.)git diff --name-status branch1..branch2
(mungkin jelas, tetapi saya pikir saya akan menyebutkannya kalau-kalau ada orang lain yang memiliki masalah yang sama dengan saya).Kamu bisa melakukan ini:
git diff branch1:path/to/file branch2:path/to/file
Jika Anda telah mengkonfigurasi difftool, maka Anda juga dapat:
git difftool branch1:path/to/file branch2:path/to/file
Pertanyaan terkait: Bagaimana cara melihat output git diff dengan program visual diff
sumber
branch1:./file
). Ini juga berguna jika file berada di lokasi terpisah antara cabang-cabang (misalnyagit diff branch1:old/path/to/file branch2:new/path/to/file
).git diff branch1 branch2 path/to/file
.Sintaks yang lebih modern:
git diff ..master path/to/file
Awalan titik ganda berarti "dari direktori kerja saat ini ke". Anda juga bisa mengatakan:
master..
, yaitu kebalikan dari di atas. Ini sama denganmaster
.mybranch..master
, secara eksplisit mereferensikan status selain dari pohon kerja saat ini.v2.0.1..master
, yaitu referensi tag.[refspec]..[refspec]
, pada dasarnya apa pun yang dapat diidentifikasi sebagai kode negara untuk git.sumber
Ada banyak cara untuk membandingkan file dari dua cabang berbeda:
Opsi 1: Jika Anda ingin membandingkan file dari n cabang tertentu dengan cabang spesifik lainnya:
Contoh:
Opsi 2: Cara sederhana:
Contoh:
Opsi 3: Jika Anda ingin membandingkan direktori kerja Anda saat ini dengan beberapa cabang:
Contoh:
sumber
Saya hanya melakukannya
git diff branch1 branch2 path/to/file
Ini memeriksa perbedaan antara file. Perubahan
branch1
akan berwarna merah. Perubahanbranch2
akan berwarna hijau.Diasumsikan bahwa itu
branch1
adalah masa lalu danbranch2
masa depan. Anda dapat membalikkan ini dengan membalik urutan cabang di diff:git diff branch2 branch1
sumber
Jika Anda ingin membuat perbedaan terhadap cabang saat ini, Anda dapat menonaktifkannya dan menggunakan:
git diff $BRANCH -- path/to/file
dengan cara ini akan berbeda dari cabang saat ini ke cabang yang direferensikan (
$BRANCH
).sumber
Setuju dengan jawaban yang disarankan oleh @dahlbyk. Jika Anda ingin diff ditulis ke file diff untuk ulasan kode gunakan perintah berikut.
sumber
Dalam kasus saya, saya menggunakan perintah di bawah ini:
Perintah ini dapat membantu Anda membandingkan file yang sama di dua cabang yang berbeda
sumber
Cara terbaik untuk melakukannya adalah dengan menggunakan
git diff
cara berikut:git diff <source_branch> <target_branch> -- file_path
Ini akan memeriksa perbedaan antara file di cabang-cabang itu. Lihatlah artikel ini untuk informasi lebih lanjut tentang perintah git dan cara kerjanya.
sumber
Gunakan hash sebagai berikut:
di mana hash1 dapat berupa komit dari cabang apa pun, sama untuk hash2 .
sumber
Ada dua skenario untuk membandingkan file:
Skenario 1: Bandingkan file di cabang jauh (kedua cabang harus ada di repositori jarak jauh)
Skenario 2: Bandingkan file lokal (di copy area kerja lokal) dengan file di repositori jarak jauh.
Logikanya sederhana. Jika Anda memberikan dua nama cabang untuk diff, itu akan selalu membandingkan cabang jauh, dan jika Anda hanya memberikan satu nama cabang, itu akan selalu membandingkan copy pekerjaan lokal Anda dengan repo jarak jauh (yang Anda berikan). Anda dapat menggunakan rentang untuk menyediakan repositori jarak jauh.
mis. Periksa cabang
dalam hal ini, jika Anda memberikan nama file, itu akan membandingkan salinan nama file lokal Anda dengan cabang jarak jauh bernama " branch2 ".
dalam hal ini, ia akan membandingkan nama file dari cabang jauh bernama " branch1 " vs " branch2 "
dalam hal ini juga, ia akan membandingkan nama file dari cabang jarak jauh bernama " branch1 " vs " branch2 ". Jadi, sama seperti di atas. Namun, jika Anda baru saja membuat cabang dari cabang lain, ucapkan "master" dan cabang Anda saat ini tidak ada pada repositori jarak jauh, ia akan membandingkan remote " master " vs remote " branch2 ".
Semoga bermanfaat.
sumber
Untuk membandingkan dua file di git bash, Anda perlu menggunakan perintah:
Perintah ini akan menunjukkan perbedaan antara dua file di bash itu sendiri.
sumber