Gibt es eine Möglichkeit festzustellen, ob eine Datei verfolgt wird, indem man einige git
und dessen Exit-Code überprüfen?
Mit anderen Worten: Verfolgt Git eine Datei?
Gibt es eine Möglichkeit festzustellen, ob eine Datei verfolgt wird, indem man einige git
und dessen Exit-Code überprüfen?
Mit anderen Worten: Verfolgt Git eine Datei?
Wenn Sie Ihre Konsole nicht mit Fehlermeldungen überfrachten wollen, können Sie auch
git ls-files file_name
und überprüfen Sie dann das Ergebnis. Wenn git nichts zurückgibt, wird die Datei nicht verfolgt. Wenn sie verfolgt wird, gibt Git den Dateipfad zurück.
Dies ist praktisch, wenn Sie sie in einem Skript, z. B. PowerShell, kombinieren möchten:
$gitResult = (git ls-files $_) | out-string
if ($gitResult.length -ne 0)
{
## do stuff with the tracked file
}
EDIT
Wenn Sie git von der Bash aus benutzen wollen, gibt es --porcelain
Option zu git status
:
--porzellan
Geben Sie die Ausgabe in einem stabilen, leicht zu parsierenden Format für Skripte. Derzeit ist dies identisch mit mit der --short-Ausgabe, aber es wird garantiert dass es sich in Zukunft nicht ändern wird, was es sicher für Skripte.
Die Ausgabe sieht wie folgt aus:
> git status --porcelain
M starthudson.sh
?? bla
Oder wenn Sie nur eine Datei auf einmal bearbeiten:
> git status --porcelain bla
?? bla
ORIGINAL
tun:
git status
Es wird ein Bericht angezeigt, der angibt, welche Dateien aktualisiert wurden und welche noch nicht verfolgt werden.
Sie können sehen bla.sh
nachverfolgt und geändert wird und newbla
nicht nachverfolgt wird:
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: bla.sh
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# newbla
no changes added to commit (use "git add" and/or "git commit -a")
Ich kenne keinen Git-Befehl, der einen "schlechten" Exit-Code ausgibt, aber es scheint ein einfacher Weg zu sein, einen Git-Befehl zu verwenden, der keine Ausgabe für eine Datei liefert, die nicht verfolgt wird, wie git-log oder git-ls-files. Auf diese Weise müssen Sie nicht wirklich ein Parsing durchführen, Sie können es durch ein anderes einfaches Dienstprogramm wie grep laufen lassen, um zu sehen, ob es eine Ausgabe gab.
Zum Beispiel,
git-ls-files test_file.c | grep .
wird mit einem Null-Code beendet, wenn die Datei verfolgt wird, aber mit einem Exit-Code von eins, wenn die Datei nicht verfolgt wird.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.