Grundlagen von Linux und der Kommandozeile

In der .gitignore eines mit Git verwalteten Projekts wurde „build/“ eingetragen, doch Änderungen an der früher committeten Datei build/out.log erscheinen weiterhin in git status. Was ist der Grund?

  1. A.gitignore wirkt nur auf noch nicht verfolgte Dateien, daher muss eine verfolgte Datei mit git rm --cached aus der Verfolgung genommen werden
  2. BIn .gitignore lassen sich keine Verzeichnisse eintragen, daher müssen die Namen der zu ignorierenden Dateien einzeln eingetragen werden
  3. C.gitignore wirkt auf keine Datei, bis die Datei .gitignore selbst mit git add hinzugefügt und committet wurde
Antwort und Erläuterung anzeigen

Antwort: A. .gitignore wirkt nur auf noch nicht verfolgte Dateien, daher muss eine verfolgte Datei mit git rm --cached aus der Verfolgung genommen werden

.gitignore ist eine Einstellung, die noch nicht verfolgte Dateien (nie committet oder mit git add hinzugefügt) aus der Auflistung von git status und aus dem, was git add erfasst, ausschließt. Eine bereits verfolgte Datei wird weiter verfolgt, auch wenn sie in .gitignore steht, daher erscheinen ihre Änderungen weiterhin. git rm --cached build/out.log beendet die Verfolgung, lässt die Datei im Arbeitsverzeichnis aber bestehen, und nachdem das committet wurde, greift der Eintrag in .gitignore. Große erzeugte Dateien wie Simulationsausgaben und Build-Ergebnisse trägt man am besten von Anfang an in .gitignore ein.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Welche Zuordnung von Standardverzeichnissen unter Linux zu ihrem Inhalt ist richtig?
  2. Welche Beschreibung des Verzeichnisses /proc unter Linux ist richtig?
  3. Das Verzeichnis /home/alice/data existiert, und das aktuelle Verzeichnis ist /home/alice/work. Welches Verzeichnis wird angezeigt, wenn „cd ../data“ und danach „pwd“ ausgeführt werden?
  4. Im Home-Verzeichnis zeigt „ls“ nur notes.txt an, „ls -a“ dagegen „.“, „..“, „.bashrc“ und „notes.txt“. Welche Erklärung dieses Ergebnisses ist richtig?
  5. Welches Ergebnis liefern die letzten beiden cat-Befehle, wenn die obigen Befehle nacheinander ausgeführt werden?