Ich habe ein Git-Repository auf Github gehostet. Nachdem ich viele Dateien festgeschrieben habe, stelle ich fest, dass ich Dateien erstellen .gitignore
und ausschließen .exe
muss .obj
.
Werden diese festgeschriebenen Dateien jedoch automatisch aus dem Repository entfernt? Gibt es eine Möglichkeit, das zu erzwingen?
Antworten:
Nein, Sie können nicht erzwingen, dass eine bereits im Repo festgeschriebene Datei entfernt wird, nur weil sie dem hinzugefügt wurde
.gitignore
Sie müssen
git rm --cached
die Dateien entfernen, die Sie nicht im Repo haben möchten. (--cached, da Sie wahrscheinlich die lokale Kopie behalten, aber aus dem Repo entfernen möchten.) Wenn Sie also alle Exes aus Ihrem Repo entfernen möchten, tun Sie dies(Beachten Sie, dass das Sternchen * aus der Shell zitiert wird. Dadurch kann git und nicht die Shell die Pfadnamen von Dateien und Unterverzeichnissen erweitern.)
quelle
git rm /\*.exe
, werden allegit
.git pull
gespeichert. Bei anderen Benutzern, die a ausführen, werden ihre Dateien jedoch gelöscht.Nein. Selbst mit einer vorhandenen
.gitignore
Datei können Sie "ignorierte" Dateien mit dem-f
Flag (force) bereitstellen. Wenn die Dateien bereits festgeschrieben sind, werden sie nicht automatisch entfernt.quelle
Wenn Sie die Änderungen noch nicht vorgenommen haben:
quelle
Ich musste .idea- und Zielordner entfernen und nachdem ich alle Kommentare gelesen hatte, funktionierte dies für mich:
und dann auf Master drücken
quelle
.idea
war mein Problem Ich denke, es war auch deins:)
Nein.
Das 'beste' Rezept dafür ist,
git filter-branch
wie hier beschrieben zu verwenden:Die Manpage für Git-Filter-Branch enthält umfassende Beispiele.
Hinweis Sie schreiben den Verlauf neu. Wenn Sie Revisionen veröffentlicht haben, die die versehentlich hinzugefügten Dateien enthalten, kann dies zu Problemen für Benutzer dieser öffentlichen Zweige führen. Informieren Sie sie oder überlegen Sie, wie dringend Sie die Dateien entfernen müssen.
Hinweis Verwenden Sie bei Vorhandensein von Tags immer die
--tag-name-filter cat
Option zugit filter-branch
. Es tut nie weh und erspart Ihnen Kopfschmerzen, wenn Sie später feststellen, dass Sie es gebraucht habenquelle
--all
um alle (lokalen) Zweige gleichzeitig umzuschreibenAuch nachdem Sie die Datei (en) gelöscht und dann festgeschrieben haben, bleiben diese Dateien im Verlauf. Um diese zu löschen, sollten Sie BFG Repo-Cleaner verwenden . Es ist eine Alternative zum Git-Filter-Zweig.
quelle