Ich frage mich, wie ich ein ganzes Verzeichnis von meinem Git-Diff ausschließen kann. (In diesem Fall / Spezifikation). Ich erstelle ein Diff für unsere gesamte Softwareversion mit dem Befehl git diff. Die Änderungen an den Spezifikationen sind jedoch für dieses Verfahren irrelevant und verursachen nur Kopfschmerzen. Jetzt weiß ich, dass ich es kann
git diff previous_release..current_release app/
Dies würde einen Unterschied für alle Änderungen im App-Verzeichnis erzeugen, jedoch nicht zum Beispiel im lib / -Verzeichnis. Weiß jemand, wie man diese Aufgabe erfüllt? Vielen Dank!
Bearbeiten: Ich möchte nur klar sein, ich weiß, ich kann nur die Parameter aller meiner Verzeichnisse am Ende, minus / spec, aneinanderreihen. Ich hatte gehofft, dass es eine Möglichkeit gibt, ein einzelnes Verzeichnis im Befehl wirklich auszuschließen.
Antworten:
Angenommen, Sie verwenden Bash und haben Extended Globbing (
shopt -s extglob
) aktiviert , können Sie dies von der Shell-Seite aus handhaben:Spart Ihnen das Auflisten aller anderen Dinge.
Oder schalenunabhängig:
Sie können dies in einem einzeiligen Shell-Skript zusammenfassen, um zu vermeiden, dass Sie die Argumente erneut eingeben müssen.
quelle
.!(.|)
alles abgleichen , beginnend mit einem.
Neben.
und..
.--
ich gerade hinzugefügt habe, das beheben sollte.--name-only
ganz am Ende hinzufügen .-- path/of/new/file
und es wird es herausfinden :)Basierend auf dieser Antwort können Sie auch verwenden:
Dies ist eine neue Git-Funktion, mit der bestimmte Pfade ausgeschlossen werden können. Es sollte zuverlässiger sein als verschiedene Shell-Oneliner.
Ich poste dies hier, weil diese Frage immer noch der Hit Nr. 1 für "git diff exclude path" ist.
quelle
git diff previous_release current_release --name-status -- . ':!spec'
current_release
und brachteprevious_release
mich zum Lächeln, als ich es herausfand.git diff --stat dev -- . ':!/Mopy/Docs/*'
. Was für mich und Variationen nicht funktioniert hatgit diff dev --stat -- . ':!('Mopy/Docs/Wrye Bash General Readme.html'|'Mopy/Docs/Wrye Bash Advanced Readme.html')'
git diff --check -- . ':!config/database.yml'
git diff previous_release current_release -- . ':!file_a' ':!file_b'
Wenn Sie mehr als einen Pfad angeben möchten, der in einem Git-Diff ausgeschlossen werden soll, fügen Sie am Ende einfach zusätzliche Ausschlussparameter hinzu, z. B. um alles in Vendor- und Bin- Verzeichnissen von den Statistiken auszuschließen : -
quelle
Sie können versuchen, das diff-Attribut für alle Dateien im lib-Verzeichnis zu deaktivieren.
.gitattributes
::racl101 fügt in den Kommentaren hinzu :
quelle
.gitattributes
Datei in einem speziellen Zweig festlegen, der nur für diese Art von 'Release'-current_release
Diff erstellt wurde._site/* -diff
Git diff akzeptiert jetzt ein benutzerdefiniertes Ausschlussformat:
git diff -- ':(exclude)lib/*'
Seien Sie vorsichtig, wenn Sie viele sich wiederholende Ordnernamen haben ('/ app', '/ lib' usw.), da dies Dateien relativ zum aktuellen Arbeitsverzeichnis UND zum Git-Stammverzeichnis ausschließt.
quelle
git diff -- . ':(exclude)lib/*'
?git diff
alles für Ihren aktuellen Pfad tun können , anstatt es zu benötigengit diff -- .
git diff -- ":(exclude)lib/*"
Relativ zum Git-Stammverzeichnis
git diff
akzeptiert einen optionalen AusschlussMöglicherweise möchten Sie einige Platzhalter hinzufügen
Zielspezifische Dateitypen
Etwas syntaktischer Zucker angewendet
Oder legen Sie ein kleines Skript für Ihre Punktedateien ab
Wie
.bash_profile
oder.zshrc
quelle
quelle