Yanıtlar:
git diff --name-only SHA1 SHA2
sadece taahhütleri tanımlamak için yeterli SHA'yı dahil etmeniz gerekir. Örneğin şunları da yapabilirsiniz
git diff --name-only HEAD~10 HEAD~5
onuncu en son taahhüt ile beşinci en son (ya da böyle) arasındaki farkları görmek için.
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
dosyalara da hangi işlemlerin yapıldığını gösterir
git diff --name-status
eklenmiş dosyaları göstermek istemiyor gibi görünüyor. @sschuberth işaret git show
benim için düzgün çalışması gibi görünüyor, hangi: git show --pretty=format: --name-status
. Sadece yapmak git show --name-status
biraz daha fazla bilgi verir, ama yine de güzel ve yoğun ... bu benim yeni goto
git diff --name-status [SHA1 [SHA2]]
dosyaya ne olduğunu (basitçe değiştirilmiş, silinmiş, eklenmiş ...) anlatan basit bir önek elde etmeniz dışında - sadece ad gibi
git log --name-status --oneline [SHA1..SHA2]
benzerdir, ancak taahhütler yürütme mesajından sonra listelenir, böylece bir dosyanın ne zaman değiştirildiğini görebilirsiniz.
Belirli dosyalara tam ne ilgileniyorsanız / klasörleri ekleyebilirsiniz -- <filename> [<filename>...]
etmek git log
sürümü.
tek bir işlem için ne olduğunu görmek istiyorsanız, SHA1 olarak adlandırın, sonra yapın
git log --name-status --oneline [SHA1^..SHA1]
Dosya durumu bayrakları:
M değiştirildi - Dosya değiştirildi
C copy-edit - Dosya kopyalandı ve değiştirildi
R rename-edit - Dosya yeniden adlandırıldı ve değiştirildi
A eklendi - Dosya eklendi
D silindi - Dosya silindi
U unmerged - Birleştirme işleminden sonra dosya çakışıyor
--relative[=<path>]
Seçenek Emin değilim, size yardımcı olabilir. Aksi takdirde her zaman vardır | erep -v '(.tmp|.foo|.dontwant)$'
...
Görünüşe göre hiç kimse bu geçişten bahsetmedi --stat
:
$ git diff --stat HEAD~5 HEAD
.../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++-----
.../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +-
.../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++
.../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
.../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++
.../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++
.../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++
pom.xml | 2 +-
.../apache/calcite/adapter/spark/SparkRules.java | 7 +--
9 files changed, 117 insertions(+), 26 deletions(-)
Ayrıca orada --numstat
$ git diff --numstat HEAD~5 HEAD
40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1 1 pom.xml
4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java
ve --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
Ancak, şubenizle ortak atası arasında başka bir şubeyle değiştirilen dosyaları görmek için (orijin / master):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
ya da benzer bir şey, keşke yukarıdakileri tetikler.
git show --pretty=format: --name-only origin/master..
.
git diff --name-only master..branch
, github PR listesine karşılık gelmez. Bu şekilde daha kesin. Ama yine de github PR 173 dosyaları vs 171 değişti var. ( merge-base
228 vs 171 olmadan )
İki dal arasında değiştirilmiş dosyaları göstermek istiyorsanız @ artfulrobot'un cevabını desteklemek için:
git diff --name-status mybranch..myotherbranch
Önceliğe dikkat edin. Önce daha yeni bir dal yerleştirirseniz, dosyalar eklenenlerden ziyade silinmiş olarak gösterilir.
Bir grep
kutu eklemek , işleri daha da hassaslaştırabilir:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Bu yalnızca eklenmiş dosyaları gösterir myotherbranch
.
--diff-filter
, bu işlevselliği yerel olarak veren, bu da yanlış sonuçların daha az şansı olduğu anlamına gelir (örneğin, yanlış pozitifler)
Aşağıdaki takma adı ekleyin ~/.bash_profile
ve çalıştırın source ~/.bash_profile
; şimdi her zaman güncellenen dosyaları görmek için son taahhüt, çalıştırmak, showfiles
git deponuzdan.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
yapmak için git showfiles
.
Bu, dosyalardaki değişiklikleri gösterecektir:
git diff --word-diff SHA1 SHA2
Artfulrobot'un cevabında söylediği gibi:
git diff --name-status [SHA1 [SHA2]]
Örneğim:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
Sadece Java dosyalarına odaklanması gereken biri için bu benim çözümüm:
git diff --name-status SHA1 SHA2 | grep '\.java$'
Aşağıdakiler benim için iyi çalışıyor:
$ git show --name-only --format=tformat: SHA1..SHA2
Tek bir işlemle de kullanılabilir:
git show --name-only --format=tformat: SHA1
sizlere bir ChangeSet SHA's Listesi sağlanmış ve hangi dosyaların değiştirildiğini görmek için bunları yinelemek isteyen Jenkins'te kullanışlıdır.
Bu, yukarıdaki cevapları bir çift benzer, ancak kullanarak tformat:
yerine format:
uzaklaşmaların kaydedilmesini arasındaki ayırıcı boşluk.
Dayanarak git diff --name-status
I yazdım git-diffview iki yol arasında değiştiğini şeyin hiyerarşik ağaç görünümünü vermektedir git uzantısı.