Yanıtlar:
Yapabilirsin:
git diff master~20:pom.xml pom.xml
... şimdiki 20 revizyondan ilk ebeveyne kadar pom.xmlolanı karşılaştırmak için master. Sen yerini alabilir master~20nesne işlemek adına (sha1sum) ya da herhangi biriyle, tabii ki, bir revizyon belirterek diğer birçok yönden .
Bunun aslında eskisini pom.xmlçalışma ağacınızdaki sürümle karşılaştırdığına dikkat edin , taahhüt edilen sürümle değil master. Bunu istiyorsanız, bunun yerine aşağıdakileri yapabilirsiniz:
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
Örneğin:
git diff b0d14a4 foobar.txt
git diff <revision> root/path/file.
Tek bir dosyanın son işleme arasındaki farkı görmek istiyorsanız şunları yapabilirsiniz:
git log -p -1 filename
Bu git size dosya diff verecektir, yerel dosya karşılaştırmıyor.
-1Değişiklikleri alana kadar adım adım artırabilirsiniz .
gitlog () { git log -${3:-p} -${2:-1} $1; } Like: gitlog Rakefileor gitlog Rakefile 5and gitlog Rakefile 10 s. Birincisi bir farkı gösterir; ikincisi beş fark gösterir; üçüncüsü on gösterir --no-patch.
Son işlemde bir dosyada nelerin değiştiğini görmek için:
git diff HEAD~1 path/to/file.
(~ 1) sayısını, fark etmek istediğiniz n'inci komut olarak değiştirebilirsiniz.
HEAD~1yerine ikame edilmektedir <revision>bu cevabı yinelenen yapar.
Genel Sözdizimi:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
deponuzun herhangi bir yerinde "DosyaAdı.xml" adlı tüm dosyalar için.
"-" ve "**" arasındaki boşluğa dikkat edin
Sorunuzun cevabı:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
git ile her zaman olduğu gibi, bir taahhütte bulunmak için / sha1 / "HEAD ^" etiketini kullanabilirsiniz.
Ubuntu üzerinde git 1.9.1 ile test edildi.
HEAD'inizden hiçbiri taahhütte bulunmuyorsa , özellikle de dosya adlarınız uzunsa, bash'ın küme ayracı genişletmesi gerçekten yararlı olur: yukarıdaki örnek:
git diff master~20:pom.xml master:pom.xml
Olacaktı
git diff {master~20,master}:pom.xml
Bash ile Brace genişlemesi hakkında daha fazla bilgi .
git diff -w HEAD başlangıç noktası / ana yol / dosya / dosya
git diff master~20 -- pom.xml
Ana dalda değilseniz da çalışır.
Aynı şeyi GitHub'dan yapmak isteyen kişiler için, zaman içindeki taahhütleri karşılaştırma konusuna bakın .
Örneğin, bir stash içindeki tek bir dosyaya fark etmeniz gerekiyorsa,
git diff stash@{0} -- path/to/file
Belirli bir taahhüddeki diff'i arıyorsanız ve komut satırı yerine github kullanıcı arayüzünü kullanmak istiyorsanız (bunu diğer insanlara bağlamak istediğinizi varsayalım), şunları yapabilirsiniz:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
Örneğin:
İşlemin tamamındaki tüm dosyalar arasında gezinmenizi sağlayan sağ üstteki Önceki ve Sonraki bağlantılarına dikkat edin.
Bu, yalnızca herhangi bir keyfi sürüm arasında karşılaştırma yapmak için değil, yalnızca belirli bir taahhüt için çalışır.
git diff <revision>:foo/ HEAD:foo/.