Nur neugierig, aus welchem Grund brauchst du das?
Stephen Jennings
@StephenJennings: Es ist eine bessere Möglichkeit zu wissen, welche Art von Dateien man unter Versionskontrolle hat, als mental " ls -RMinus .gitignore" zu machen. Der Nutzen im Allgemeinen: Man kann mehr oder weniger wissen, was los ist, aber die Selbstbeobachtung des Repositorys gibt einem das Vertrauen , das man kennt. Insbesondere für Anfänger macht dieses Vertrauen einen großen Unterschied darin, wie angenehm die Verwendung des Programms ist. Git macht es nicht zur Priorität, seine Benutzer zu beruhigen, weshalb so viele Leute es verständlicherweise hassen, bis sie es lernen.
Ich bin absolut schrecklich in Shell-Skripten, daher ist dies mit Sicherheit nicht optimal, aber so etwas könnte es für Sie tun, vorausgesetzt, Sie verwenden Bash. Hoffentlich kann jemand anderes vorbeikommen und es aufräumen oder durch etwas Besseres ersetzen. Ich habe es nur auf meinem Mac getestet, also Vorsicht.
Es sollte alle Dateien in Commits drucken, die Vorfahren des aktuellen HEAD sind. Speichern Sie es in einer Datei, die manifest.shirgendwo in Ihrem Pfad aufgerufen wird:
#!/bin/bash
TFILE=$(mktemp -t git-manifest)
for sha in $(git log --pretty=format:%H)
do
git ls-tree --name-only --full-tree -r $sha >> $TFILE
done
sort -u $TFILE
rm $TFILE
Keine Notwendigkeit, exportda es in untergeordneten Prozessen nicht verfügbar sein muss. Wenn sich die Schleife über SHA-Hashes befindet, funktioniert die Schleife einwandfrei, andernfalls readwäre es besser, die Variable zu verwenden und in Anführungszeichen zu setzen. sorthat eine -uOption, die macht was uniqmacht. Die Datei wird nicht rmangezeigt, wenn Sie sie zur Hälfte abbrechen. trapDafür benötigen Sie eine , aber das wäre für dieses Skript wahrscheinlich übertrieben.
Daniel Beck
@ DanielBeck: Danke, ich habe es leicht aktualisiert. mktempgibt es in Git Bash nicht, ich sollte einen Weg finden, damit umzugehen, damit Windows auch spielen kann.
git ls-files
?ls -R
Minus.gitignore
" zu machen. Der Nutzen im Allgemeinen: Man kann mehr oder weniger wissen, was los ist, aber die Selbstbeobachtung des Repositorys gibt einem das Vertrauen , das man kennt. Insbesondere für Anfänger macht dieses Vertrauen einen großen Unterschied darin, wie angenehm die Verwendung des Programms ist. Git macht es nicht zur Priorität, seine Benutzer zu beruhigen, weshalb so viele Leute es verständlicherweise hassen, bis sie es lernen.Antworten:
Ich bin absolut schrecklich in Shell-Skripten, daher ist dies mit Sicherheit nicht optimal, aber so etwas könnte es für Sie tun, vorausgesetzt, Sie verwenden Bash. Hoffentlich kann jemand anderes vorbeikommen und es aufräumen oder durch etwas Besseres ersetzen. Ich habe es nur auf meinem Mac getestet, also Vorsicht.
Es sollte alle Dateien in Commits drucken, die Vorfahren des aktuellen HEAD sind. Speichern Sie es in einer Datei, die
manifest.sh
irgendwo in Ihrem Pfad aufgerufen wird:quelle
export
da es in untergeordneten Prozessen nicht verfügbar sein muss. Wenn sich die Schleife über SHA-Hashes befindet, funktioniert die Schleife einwandfrei, andernfallsread
wäre es besser, die Variable zu verwenden und in Anführungszeichen zu setzen.sort
hat eine-u
Option, die macht wasuniq
macht. Die Datei wird nichtrm
angezeigt, wenn Sie sie zur Hälfte abbrechen.trap
Dafür benötigen Sie eine , aber das wäre für dieses Skript wahrscheinlich übertrieben.mktemp
gibt es in Git Bash nicht, ich sollte einen Weg finden, damit umzugehen, damit Windows auch spielen kann.