Erzwinge, dass git .gitignore aktualisiert

70

Ich habe eine .gitignoreDatei und sie ignoriert einige Dateien. Ich habe die .gitignoreDatei aktualisiert (einige Dateinamen entfernt und einige Dateinamen hinzugefügt). Dies spiegelt sich nicht in wider git status. Wie kann ich git zwingen, diese Änderungen zu aktualisieren, damit Dateien verfolgt werden, die zuvor nicht verfolgt wurden, und umgekehrt?

Ich habe diese Frage ausprobiert , dennoch werden nicht alle meine Dateien nachverfolgt (gemäß meiner aktualisierten .gitignore). (Wie kann ich git zwingen, Dateien zurückzuziehen, sobald sie .gitignoreaktualisiert oder gelöscht wurden?)

Gemeinschaft
quelle
2
Git Ignorieren funktioniert nicht bei Dateien, die bereits verfolgt wurden. In diesem Fall müssen Sie git rmzuerst die Dateien bearbeiten, bevor Sie sie hinzufügen können .gitignore.
Tim Biegeleisen

Antworten:

10

Wenn Sie alle Dateien hinzufügen möchten, löschen Sie alle Dateinamen aus der .gitignoreDatei, nicht die .gitignoreDatei und commitdiese, und versuchen Sie es dann

git config --global core.excludesfile ~/.gitignore_global

Einige Dateien werden vom Git je nach Betriebssystem ignoriert (wie DLL in Windows). Weitere Informationen .

Jetzt

git add .

git status

git commit -m "your message"

Oder

Sie können einen einfachen Hack versuchen, es kann funktionieren oder nicht. Löschen Sie alle Dateinamen aus der .gitignoreDatei und fügen Sie diese Zeile hinzu !*.*, dann addund commit.

AKTUALISIEREN

Einfach, ich erkläre es mit einem Beispiel. Angenommen, Sie haben einen buildOrdner, der bereits von git hinzugefügt und verfolgt wird. Jetzt entscheiden Sie sich, diesen Ordner nicht zu verfolgen.

  1. Fügen Sie diesen Ordner ( build) hinzu.gitignore
  2. buildOrdner löschen
  3. Übernehmen Sie Ihre Änderungen

Von nun an verfolgt git den buildOrdner nicht mehr.

Saahithyan Vigneswaran
quelle
10
"Löschen Sie alle Dateinamen aus der Gitignore-Datei, nicht aus der Gitignore-Datei, und schreiben Sie sie fest." Was bedeutet das?
M93a
Wenn Sie über diese Antwort verwirrt sind, lesen Sie die Antwort von @ Shravan40: stackoverflow.com/a/38451183/1886357
Eric
@ m93a siehe Update-Abschnitt, folgen Sie den Schritten
Saahithyan Vigneswaran
164

Sie müssen zuerst den vorhandenen Git löschen cache.

Entfernen Sie den Cache aller Dateien

  • git rm -r --cached .

Entfernen Sie den Cache einer bestimmten Datei

  • git rm -r --cached <file_name.ext>

Wenn Sie den vorhandenen Cache geleert haben, fügen Sie / stage file / files im aktuellen Verzeichnis hinzu und schreiben Sie fest

  • git add . // Um ​​alle Dateien hinzuzufügen
  • git add <file_name.ext> // Um ​​eine bestimmte Datei hinzuzufügen
  • git commit -m "Suitable Message"

Wie Scott Biggs in seinem Kommentar betonte: "Dies funktioniert sowohl beim Hinzufügen einer Datei, die einmal ignoriert wurde, als auch beim Ignorieren einer Datei, die einmal verfolgt wurde."

Shravan40
quelle
1
Ich habe ausdrücklich erwähnt (und verlinkt), dass dies meinem Problem nicht geholfen hat
1
Hat git statusTrack - .gitignoreDatei?
Shravan40
2
Verwenden Sie, um die Verfolgung einer aktuell verfolgten Datei zu beenden git rm --cached.
Joker
@ Shravan nach dem Löschen .gitignorevom lokalen PC, no
2
Beachten Sie, dass dies sowohl zum Hinzufügen einer Datei, die einmal ignoriert wurde, als auch zum Ignorieren einer Datei, die einmal verfolgt wurde, funktioniert.
SMBiggs
5

Es klappt

// Übernehmen Sie zuerst alle ausstehenden Codeänderungen und führen Sie dann diesen Befehl aus:

git rm -r --cached .

// Dies entfernt alle geänderten Dateien aus dem Index (Staging-Bereich) und führt dann einfach Folgendes aus:

git add .

//Verpflichten

git commit -m "Atualizando .gitignore para..."
Najathi
quelle
3

Sie können dieses Problem beheben, indem Sie den Cache der spezifischen Dateien löschen, in denen dieses Problem auftritt. Das von Ihnen erwähnte Problem tritt auf, wenn Sie einige bestimmte Dateien einmal festgeschrieben haben und sie später in .gitignore hinzufügen .

git rm -r --cached <your_file.extension>
git commit -am "Suitable Message"

Die gleiche Lösung wird von @ sharvan40 oben vorgeschlagen, aber Sie müssen den Cache nicht für alle Dateien entfernen. Es wird ein neues Commit für alle Ihre Dateien erstellt.

Rajdeep Gautam
quelle
0

Angenommen, Ihr aktuelles Arbeitsverzeichnis ist leer.

Mit können Sie überprüfen, welche Dateien git derzeit verfolgt git ls-files. Wenn Sie viele Dateien haben, können Sie git ls-files | grep hello.txtfeststellen, ob git diese bestimmte Datei verfolgt.

Wenn es verfolgt wird, verwenden Sie, um es git rm hello.txtzu entfernen (wie Tim in seinem Kommentar erwähnt hat ). Übernehmen Sie diesen nicht verfolgten Status möglicherweise zuerst und fügen Sie ihn dann bei .gitignoreIhrem nächsten Commit zu Ihrem hinzu . Ich habe in der Vergangenheit ein funky Verhalten gesehen, als ich versucht habe, dasselbe Commit zu ignorieren und zu entfernen.

Vidur
quelle