Vraag Hoe kun je alleen de bestandsnamen weergeven die tussen twee commits zijn veranderd?


Ik heb een hoop commits in de repo. Ik wil een lijst zien met bestanden die zijn veranderd tussen twee commits - van SHA1 tot SHA2.

Welke opdracht moet ik gebruiken?


1474
2017-10-12 01:48


oorsprong


antwoorden:


git diff --name-only SHA1 SHA2

waarbij u alleen voldoende van de SHA hoeft op te nemen om de commits te identificeren. U kunt ook doen, bijvoorbeeld

git diff --name-only HEAD~10 HEAD~5

om de verschillen te zien tussen de tiende laatste commit en de vijfde laatste (of zo).


2006
2017-10-12 01:51



git diff --name-status [SHA1 [SHA2]]

is als --name-only, behalve dat je een eenvoudig voorvoegsel krijgt dat je vertelt wat er met het bestand is gebeurd (aangepast, verwijderd, toegevoegd ...)

git log --name-status --oneline [SHA1..SHA2]

is vergelijkbaar, maar commits worden na het commit-bericht weergegeven, zodat u kunt zien wanneer een bestand is gewijzigd.

  • als je geïnteresseerd bent in wat er is gebeurd met bepaalde bestanden / mappen die je kunt toevoegen -- <filename> [<filename>...] naar de git log versie.

  • als je wilt zien wat er is gebeurd voor een enkele commit, noem het SHA1, doe het dan
    git log --name-status --oneline [SHA1^..SHA1]

Bestandsstatus vlaggen:
M gewijzigd - Bestand is gewijzigd
C copy-edit - Bestand is gekopieerd en gewijzigd
R hernoemen-bewerken - Bestand is hernoemd en gewijzigd
A added - Bestand is toegevoegd
D verwijderd - Bestand is verwijderd
U unmerged - Bestand heeft conflicten na samenvoegen


342
2017-07-26 09:26



Maar voor het zien van de bestanden die zijn gewijzigd tussen uw branch en zijn gemeenschappelijke voorouder met een andere branch (bijvoorbeeld origin / master):

git diff --name-only `git merge-base origin/master HEAD`

41
2018-03-20 17:10



Het lijkt erop dat niemand de omschakeling heeft genoemd --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(-)

Er zijn ook --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

en --shortstat

$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)

27
2017-10-19 21:50



Om het antwoord van @artfulrobot aan te vullen, als u veranderde bestanden tussen twee branches wilt tonen:

git diff --name-status mybranch..myotherbranch

Wees voorzichtig met voorrang. Als u de nieuwere vertakking als eerste plaatst, worden de bestanden als verwijderd weergegeven in plaats van toegevoegd.

Een toevoegen grep kan de zaken verder verfijnen:

git diff --name-status mybranch..myotherbranch | grep "A\t"

Dat toont dan alleen de toegevoegde bestanden myotherbranch.


17
2017-10-22 10:42



Voeg hieronder alias toe aan jouw ~/.bash_profile, ren dan, source ~/.bash_profile; nu altijd wanneer je de bijgewerkte bestanden in de laatste commit, run, moet zien showfiles vanuit je git repository.

alias showfiles='git show --pretty="format:" --name-only'

8
2018-04-10 19:38



Dit toont de wijzigingen in bestanden:

git diff --word-diff SHA1 SHA2

7
2017-12-04 15:10



Gebruik git log --pretty = oneline> C: \ filename.log

die alleen een oneline zal registreren (--pretty = oneline), dat is de naam van het gewijzigde bestand. Noteert ook alle details in uw uitvoerbestand.


3
2017-09-10 10:59