Git işlemindeki değişiklikler nasıl görülür?


Yanıtlar:


1973

Belirli bir COMMITkarma için farkı görmek için :

git diff COMMIT~ COMMITsize bu COMMITata ile ' arasındaki farkı gösterecektir COMMIT. Komutla ilgili ayrıntılar ve gösterim ve arkadaşları hakkında gitrevisions için git diff için man sayfalarına bakın . ~

Alternatif olarak, git show COMMITçok benzer bir şey yapacaktır. (Değişikliğin dahil olduğu taahhüdün verileri - birleştirme taahhütleri için değil.) Git şovu sayfasına bakınız .


17
O Not ^ihtiyaçları Thomson ve Bourne kabukları alıntı (eşanlamlı için gereken |orada) ve rcve türevlerinin (şapka operatörü) ve zshextendedglob ile (etkin notglobbing operatörü)
Stephane Chazelas

3
Not HEAD^Bir işlemeleri hâlinde, ilk ebeveyn ima birden anne (yani birleştirme taahhüt) sahiptir.
Mansour

23
git diff COMMIT~ COMMITbenim için çalışıyor, şapka yerine tilde dikkat edin. Git sürüm 2.6.1.windows.1'i Windows 10'da çalıştırıyorum.
Juuso Ohtonen

14
@tradetree: COMMIT kelimesinin yerine bazı taahhütlerin adı yazılır, örneğin SHA toplamı.
Nick Matteo

91
Git şovunun bu soru için daha uygun olduğunu ve önce belirtilen öneri olması gerektiğini hissediyorum.
pypmannetjies

496

" Git ile üst düzey bağlılığı için kısayol? " İfadesinde belirtildiği gibi, şunlarla da kullanabilirsiniz git diff:

git diff COMMIT^!

veya

git diff-tree -p COMMIT

Git show ile şunları yapmanız gerekir (yalnızca diff'e odaklanmak için):

git show --color --pretty=format:%b $COMMIT

COMMITParametresi olan tamamlama-ISH :

Bir nesne işlemek veya bir nesne yinelemeli bir indirgenmedikleri edilebilir nesne işlemek. Aşağıdaki tüm tamamlama-ishes: a nesne işlemek, bir etiket nesnesi , bir işaret bir nesne işlemek olduğu, bir etiket nesnesi bir işaret nesne işlemek bir etiket nesnesine noktaları vs.

Bir işleme başvurmak için "REVİZYONLARI BELİRLEYİN" bölümüne bakınız .
Ayrıca bkz. " Git'te tree-ish ne anlama geliyor? ".


370

Ayrıca bu kolay yolu deneyebilirsiniz:

git show <COMMIT>

2
Bu oldukça farklı bir şey yapıyor gibi görünüyor
Sefil Değişken

3
Yalnızca gönderme mesajını gösterir. Bu işlem için uygulanan kod değişikliklerinin farkı değil.
k0pernikus

1
Evet öyle? En son git sürümlerinde ...
Davy

2
Bu güncellenmiş doğru cevap olmalı
Scott Skiles

1
Cevap bu olmalı.
Roel

77

git show en son işlemde yapılan değişiklikleri gösterir.

İle eşdeğerdir git show HEAD.

git show HEAD~1 1 taahhüdü geri alır.


45

Genellikle yaparım:

git diff HEAD~1

Son taahhüt ile ilgili değişiklikleri göstermek. Daha fazla işleminiz varsa, sadece 1 sayısını, görmek istediğiniz işlem sayısına göre artırın.


34

Önce taahhüt kimliğini kullanarak,

git log #to list all

Veya

git log -p -1 #last one commit id

Taahhüt kimliğini kopyala.

Şimdi belirli bir işlemden değişiklikleri listelemek için iki yöntem kullanıyoruz,

Yöntem 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

Yöntem 2:

git show commit_id
For example: git show 1c6a600a

2
Ne anlama ^!geliyor ??
Martín Coll

2
^! Taahhüt için kısayol ^ .. taahhüt, bu da tüm ebeveynleri hariç tutacak ve bu taahhütteki farkı kontrol edecektir
Mohideen bin Mohammed

Ben bir uzman değilim ama git log c ^ bir dava (birden fazla şubeleri dahil) var! git log c ^ .. c ile tam olarak aynı değildir. Aslında çok daha iyi: git log c ^ .. c çok fazla giriş listelemişken git log c ^! doğru olanı yaptım, bu yüzden uzun zamandır aradığım şey bu
user829755

32
git show <commit_sha>

Bu size sadece bu taahhütte ne olduğunu gösterecektir. Bence sadece iki taahhüt sha arasında boşluk bırakarak bir aralık yapabilirsiniz.

git show <beginning_sha> <ending_sha>

özellik günlüklerinizin tümü arka arkaya olacağından sık sık yeniden basarsanız bu oldukça yararlıdır.


25

Git-diff (1) kılavuz sayfasından :

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

Ortasında 3. olanı kullanın:

git diff [options] <parent-commit> <commit>

Ayrıca aynı kılavuzdan, alttaki, Örnekler bölümünde :

$ git diff HEAD^ HEAD      <3>

Son işlemden ve son işlemden önceki sürümü karşılaştırın.

Kuşkusuz biraz kafa karıştırıcı bir şekilde ifade edildi, daha az kafa karıştırıcı olurdu

En son taahhüdü ondan önceki taahhütle karşılaştırın.


3
Yeniden yazmanız geçerli olacaktır git diff HEAD HEAD^.
Richard

git diff HEAD ^ HEAD hiçbir değişiklik göstermiyor.
user3690202

@ user3690202 böylece görüntülenecek herhangi bir değişiklik olmadığı anlamına gelir. Aslında durum böyle mi?

Görüntülenecek değişiklikler nasıl olamaz? Son taahhüdü görüntülemek istiyorsanız, tamamen yeni bir havuz olmadığı sürece görüntülenecek bazı değişiklikler olacak mı?
user3690202

@ user3690202 Git ile aslında üst öğeden herhangi bir değişiklik içermeyen "boş bir taahhüt" yapmak mümkündür, ancak bir komut satırı seçeneğiyle geçersiz kılınabilmesine rağmen bunu kontrol eden ve engelleyen yerleşik bir koruma vardır. Kasıtlı olarak boş bir taahhüt oluşturacağınızdan şüpheliyim, bu yüzden başka bir olasılık, Git'i gerçekten hiçbir değişiklik yapılmadığını düşünmeye iten bir (veya diğer komik boşluklar) üzerinde önceden biten satır sonu dönüşümüne sahip olmanızdır. Git'i hangi platformda çalıştırıyorsunuz?


16

Bir başka olasılık:

git log -p COMMIT -1

1
@GrantMcLean Evet, ve şimdiye kadar en çok oylanan cevapta, bu yüzden bahsetmiyorum.
John_West

11

git diff HEAD HEAD^1Üst taahhütteki farkı görmek için kullanabilirsiniz .

Yalnızca dosya listesini görmek istiyorsanız --statseçeneği ekleyin .


Demek istediğin bu, git diff HEAD ^ 1 HEAD
Shibir Basak

Bunun, ters bir karşılaştırma yapacağından kaldırıldıkça eklediğinizi göstereceğini unutmayın. diffKomutu okumanız gereken yol : taahhütten taahhüt HEADaltına almak için dosyada ne değiştirmem gerekir HEAD^1?
Brainplot

9
git difftool COMMIT^ <commit hash>

difftool'unuzu yapılandırdıysanız da mümkündür.

Nasıl buraya bakın yapılandırmak difftool Veya manuel sayfa burada

Buna ek git diff-tree --no-commit-id --name-only -r <commit hash>olarak, bir verme işlem karmasında hangi dosyaların değiştirildiğini / işlendiğini görmek için kullanabilirsiniz


9

Belirli bir taahhüdü ve son taahhüdünü karşılaştırmak için aşağıdaki komutu beğendim:

git diff <commit-hash>^-

Misal:

git diff cd1b3f485^-

6

Taahhüt kullanarak yazar ve zamanı görmek git show COMMIT. Hangi böyle bir şey ile sonuçlanacaktır:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'origin/your-feature'

Hangi dosyaların değiştirildiğini görmek istiyorsanız, yukarıdaki Birleştirme satırındaki değerlerle aşağıdakileri çalıştırın git diff --stat a2a2894 3a1ba8f.

Gerçek farkı görmek istiyorsanız, çalıştırın git --stat a2a2894 3a1ba8f


"Eğer gerçek farkı görmek istiyorsanız, çalıştırın git --stat a2a2894 3a1ba8f". Sanırım demek istedin git diff a2a2894 3a1ba8fya da başka unknown option: --stat.
Meyve

5

Tüm değişiklikleri kontrol etmek için:

  git diff <commit_Id_1> <commit_Id_2>

Yalnızca değiştirilen / eklenen / silinen dosyaları kontrol etmek için:

  git diff <commit_Id_1> <commit_Id_2> --name-only

NOT : Aralarında kesinti olmadan fark kontrolü için, taahhüt kimliklerini girmenize gerek yoktur.


4

Git sürüm 2.6.1.windows.1'i Windows 10'da çalıştırıyorum, bu yüzden Nevik'in cevabında (düzeltme yerine tilde) küçük bir değişiklik yapmam gerekiyordu:

git diff COMMIT~ COMMIT

Başka bir seçenek de caret'i alıntılamaktır:

git diff "COMMIT^" COMMIT

3

Bu komut size Git üst taahhütünü verir:

git log -n 2 <commit-hash>

Daha sonra git diff-tool <commit-hash> <parent-commit-hash>

Misal:

bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

Bundan sonra

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f

2

Sadece son taahhütteki değişiklikleri görmek istiyorsanız, git showbunu size verecektir.


1

Grafiksel bir görünümde kaynak değişikliğinin kontrol edilmesi durumunda,

$gitk (Mention your commit id here)

Örneğin:

$gitk HEAD~1 

Bu cevabın neden reddedildiğini anlamıyorum. Ben komut satırı ve metin tabanlı şeyler gitmek için bir yol olduğunu kabul ediyorum ama gitk birçok yararlı bilgi verir.
ShellFish
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.