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?
Ich schlage eine benutzerdefinierte alias bei Ihnen .gitconfig
.
Sie haben einen Weg zu tun:
1) Mit dem Befehl git:
git config --global alias.check-file <command>
2) Bearbeitung ~/.gitconfig
und fügen Sie diese Zeile im Abschnitt alias hinzu:
[alias]
check-file = "!f() { if [ $# -eq 0 ]; then echo 'Filename missing!'; else tracked=$(git ls-files ${1}); if [[ -z ${tracked} ]]; then echo 'File not tracked'; else echo 'File tracked'; fi; fi; }; f"
Nach dem Start des Befehls (1) oder der gespeicherten Datei (2) können Sie sie auf Ihrer Arbeitsfläche testen:
$ git check-file
$ Filename missing
$ git check-file README.md
$ File tracked
$ git check-file foo
$ File not tracked
Mit git log
wird darüber Auskunft geben. Wenn die Datei in Git verfolgt wird, zeigt der Befehl einige Ergebnisse (Protokolle) an. Andernfalls ist er leer.
Zum Beispiel, wenn die Datei von Git verfolgt wird,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js
commit ad9180b772d5c64dcd79a6cbb9487bd2ef08cbfc
Author: User <someone@somedomain.com>
Date: Mon Feb 20 07:45:04 2017 -0600
fix eslint indentation errors
....
....
Wenn die Datei nicht von Git verfolgt wird,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js
root@user-ubuntu:~/project-repo-directory#
Ich würde bevorzugen git log -1 --oneline
a git ls-files
weil der Befehl git log kein Verzeichnis durchläuft, so dass die Ausgabe ähnlich ist, unabhängig davon, ob der überprüfte Pfad eine Datei oder ein Verzeichnis ist.
Hier ein Beispiel für die Ausgabe git ls-files
:
vinegupt@bhoscl88-04(/imsgit_local/work/vinegupt/ims_21.8/ims_oam/MT)$ git ls-files untracked-file # Untracked file shows no output
vinegupt@bhoscl88-04(/imsgit_local/work/vinegupt/ims_21.8/ims_oam/MT)$ git ls-files form/data.json # tracked file shows its name again
form/data.json
vinegupt@bhoscl88-04(/imsgit_local/work/vinegupt/ims_21.8/ims_oam/MT)$ git ls-files form # For directory entire directory is traveresed
form/Traffic_Params_2M_IS_cont_GVolte_EATF.xls
form/data.json
Beispielhafte Ausgabe für git log -1 --oneline
:
vinegupt@bhoscl88-04(/imsgit_local/work/vinegupt/ims_21.8/ims_oam/MT)$ git log -1 --oneline untracked-file # Untracked file shows no output
vinegupt@bhoscl88-04(/imsgit_local/work/vinegupt/ims_21.8/ims_oam/MT)$ git log -1 --oneline form/data.json # tracked file shows one-line output
e8e9e0f CONTAINERS-767 MT and release change for 21.8
vinegupt@bhoscl88-04(/imsgit_local/work/vinegupt/ims_21.8/ims_oam/MT)$ git log -1 --oneline form # Only directory info is given no traversal
e8e9e0f CONTAINERS-767 MT and release change for 21.8
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.