Ich suche nach einem einfachen git
-Befehl, der eine schön formatierte Liste aller Dateien enthält, die Teil des durch einen Hash (SHA1) gegebenen Commits waren und keine zusätzlichen Informationen enthalten.
Ich habe versucht:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Obwohl es die Dateien auflistet, enthält es auch unerwünschte Diff-Informationen für jede Datei.
Gibt es einen anderen git
-Befehl, der genau die Liste liefert, die ich möchte, damit ich es nicht aus der git show
-Ausgabe analysieren kann?
Preferred Way (weil es sich um einen plumbing -Befehl handelt; soll programmatisch sein):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Ein anderer Weg (weniger bevorzugt für Skripte, da es sich um einen porcelain -Befehl handelt;
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
unterdrückt die Commit-ID-Ausgabe.--pretty
-Argument gibt eine leere Formatzeichenfolge an, um die Cruft am Anfang zu vermeiden.--name-only
zeigt nur die Dateinamen an, die betroffen waren (Thanks Hank).-r
-Argument soll in Unterbäume rekursierenWenn Sie eine Liste der geänderten Dateien erhalten möchten:
git diff-tree --no-commit-id --name-only -r <commit-ish>
Wenn Sie eine Liste aller Dateien in einem Commit abrufen möchten, können Sie verwenden
git ls-tree --name-only -r <commit-ish>
Ich gehe einfach davon aus, dass gitk
dafür nicht gewünscht ist. In diesem Fall versuchen Sie git show --name-only <sha>
.
Ich persönlich benutze die Kombination von --stat und --oneline mit dem show Befehl:
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
Wenn Sie die Statistiken zum Hinzufügen/Entfernen nicht mögen/wollen, können Sie --stat durch --name-only ersetzen.
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
Kürzlich musste ich alle geänderten Dateien zwischen zwei Commits auflisten. Also habe ich diesen (auch * nix-spezifischen) Befehl verwendet
git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq
Update : Oder wie Ethan unten zeigt
git diff --name-only START_COMMIT..END_COMMIT
Bei Verwendung von --name-status
wird die Änderung (hinzugefügt, geändert, gelöscht usw.) neben jeder Datei eingefügt
git diff --name-status START_COMMIT..END_COMMIT
Du kannst es auch tun
git log --name-only
und Sie können verschiedene Commits durchsuchen, Commit-Nachrichten und die geänderten Dateien verwenden.
Geben Sie q ein, um Ihre Eingabeaufforderung zurückzugeben.
Einfachste Form:
git show --stat (hash)
Das ist leichter zu merken und gibt Ihnen alle Informationen, die Sie benötigen.
Wenn Sie wirklich nur die Namen der Dateien möchten, können Sie die Option --name-only
Hinzufügen.
git show --stat --name-only (hash)
Ich benutze geändert Alias oft. Um es einzurichten:
git config --global alias.changed 'show --pretty="format:" --name-only'
dann:
git changed (lists files modified in last commit)
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)
Ähnliche Befehle, die nützlich sein können:
git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
Verwenden des Standardbefehls git diff (auch für Scripting geeignet):
git diff --name-only <sha>^ <sha>
Wenn Sie auch den Status der geänderten Dateien erhalten möchten:
git diff --name-status <sha>^ <sha>
Dies funktioniert gut mit Merge-Commits.
Benutzen
git log --name-status
Dies zeigt Ihnen die Commit-ID, die Nachricht, die geänderten Dateien und ob sie geändert, erstellt, hinzugefügt oder gelöscht wurden. So etwas wie ein All-in-One-Befehl.
$ git log 88ee8 ^ .. 88ee8 - name-only --pretty = "format:"
OK, Es gibt mehrere Möglichkeiten, alle Dateien in einem bestimmten Commit anzuzeigen ...
Um die Info- und show-only-Namen der Dateien, die zugesagt haben, zu reduzieren, können Sie einfach das Flag --name-only
oder --name-status
hinzufügen. Diese Flags zeigen nur die Dateinamen an, die sich von den vorherigen Commits unterscheiden, wie Sie möchten ...
Sie können also git diff
gefolgt von --name-only
mit zwei Festschreibungshashes nach <sha0> <sha1>
tun, etwa wie folgt:
git diff --name-only 5f12f15 kag9f02
Ich erstelle das folgende Bild, um alle Schritte zu zeigen, die in dieser Situation durchlaufen werden müssen:
Ich verwende dies, um eine Liste modifizierter Dateien zwischen zwei Änderungssätzen abzurufen:
git diff --name-status <SHA1> <SHA2> | cut -f2
Ich benutze gerne
git show --stat <SHA1>^..<SHA2>
git show --name-only commitCodeHere
Es gibt auch git whatchanged
, was niedriger ist als git log
.
NAME
git-whatchanged - Show logs with difference each commit introduces
Es gibt die Commit-Zusammenfassung mit einer Liste von Dateien darunter mit ihren Modi aus und wenn dort hinzugefügt (A
), gelöscht (D
) oder geändert (M
);
$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363
Würde etwas geben wie:
commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <[email protected]>
Date: Tue Sep 29 17:23:22 2015 +0200
added fb skd and XLForm
:000000 100644 0000000... 90a20d7... A Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A Pods/Bolts/Bolts/Common/BFTask.h
...
Ich weiß, dass diese Antwort nicht "ohne fremde Informationen" passt, aber ich denke immer noch, dass diese Liste nützlicher ist als nur die Dateinamen.
Ich mag das:
git diff --name-status <SHA1> <SHA1>^
Verwenden Sie den einfachen einzeiligen Befehl, wenn Sie nur die Liste der Dateien beim letzten Commit ändern möchten:
git diff HEAD~1 --name-only
Eine perfekte Antwort darauf gefunden:
git show --name-status --oneline <commit-hash>
Damit ich es wissen kann
which files were just modified M
Which files were newly added , A
Which files were deleted , D
Zeigen Sie das Protokoll an.
COMMIT kann leer sein ("") oder die sha-1 oder die sha-1 verkürzt werden.
git log COMMIT -1 --name-only
Dadurch werden nur die Dateien aufgelistet, die für die weitere Verarbeitung sehr nützlich sind.
git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
Listen Sie die Dateien auf, die sich in einem Commit geändert haben:
git diff --name-only SHA1^ SHA1
Hier werden keine Protokollnachrichten, zusätzlichen Zeilenumbrüche oder andere Unordnung angezeigt. Dies funktioniert für jedes Commit, nicht nur für das aktuelle. Ich bin nicht sicher, warum es noch nicht ganz erwähnt wurde, also füge ich es hinzu.
Eine Kombination aus "git show --stat
" (danke Ryan) und ein paar sed-Befehlen sollten die Daten für Sie reduzieren:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Dadurch wird nur die Liste der geänderten Dateien erstellt.
Es gibt einen einfachen Trick, der als Dateiliste angezeigt wird. Fügen Sie einfach :
nach dem Hash hinzu.
git show 9d3a52c474:
Sie können dann bohren,
git show 9d3a52c474:someDir/someOtherDir
Wenn Sie auf eine Datei klicken, erhalten Sie die Rohversion der Datei. Welches ist manchmal das, was Sie wollen, wenn Sie nur nach einer Nizza Referenz oder nach Schlüsselstücken suchen (diffs kann alles zum Durcheinander bringen),
git show 9d3a52c474:someDir/someOtherDir/somefile
Der einzige Nachteil dieser Methode besteht darin, dass sie nicht leicht einen Dateibaum anzeigt.
git show [email protected]{0}
funktioniert gut für mich
versuchen Sie diesen Befehl, um den Namen und die Nummer der Zeile zu ändern
git show --stat <commit-hash>
nur Dateinamen anzeigen
git show --stat --name-only <commit-hash>
für get last commit geben Sie dann diesen Befehl aus
git log -1
oder für alle git log
Ich benutze dies, um eine Liste der geänderten Dateien in Merge Commit zu erhalten
λ git log -m -1 --name-only --pretty="format:"
configs/anotherconfig.xml
configs/configsInRepo.xml
oder
λ git log -m -1 --name-status --pretty="format:"
A configs/anotherconfig.xml
M configs/configsInRepo.xml
Wenn Sie das oh-my-zsh- und git-Plugin verwenden, ist die Verknüpfung glg hilfreich:
$ glg
commit f014429013e360e1e1ef4f297b315358a5d47b5e
Author: huhu <[email protected]>
Date: Tue Dec 18 07:21:11 2018 +0800
Refine profile page.
mini/app.json | 27 ++++++++-
mini/components/postItemTwo/postItemTwo.wxml | 6 +-
mini/pages/daren/daren.js | 99 ++++++++++++++++++++++++++++++++
mini/pages/daren/daren.json | 3 +
mini/pages/daren/daren.wxml | 16 ++++++
mini/pages/daren/daren.wxss | 27 +++++++++