Ich sage mir und anderen immer wieder, dass sie keine .classpath- und .project-Dateien festschreiben und Maven verwenden sollen.
Irgendwie ignorieren Junior-Entwickler immer bestimmte Regeln und schreiben diese Dateien fest, und es ist viel besser, solche Dateien für Neulinge zu haben, die springen und den Code verwenden können.
Jetzt von meiner Seite möchte ich etwas versuchen / tun. Wenn ich das Repo klone, bekomme ich .classpath- und .project-Dateien und sicherlich werden sie in meinem System geändert.
Ich möchte jedoch, dass sie nicht festgeschrieben werden und bei der Synchronisierung mit Git immer ignoriert werden. Damit meine Änderungen im lokalen System nicht mit Git durcheinander kommen und Git-Änderungen dieser Dateien meine lokalen Dateien nicht durcheinander bringen.
Wie erreiche ich das? Wie auch immer, um diese Dateien so zu markieren, dass sie ignoriert werden?
Antworten:
Wenn die
.project
und.classpath
bereits festgeschrieben sind, müssen sie aus dem Index entfernt werden (aber nicht von der Festplatte).Dann
.gitignore
würde das funktionieren (und diese Datei kann hinzugefügt und über Klone geteilt werden).Diese
gitignore.io/api/eclipse
Datei funktioniert dann beispielsweise wie folgt:Beachten Sie, dass Sie beim Klonen ein " Vorlagenverzeichnis " verwenden können (stellen Sie sicher, dass Ihre Benutzer eine Umgebungsvariable
$GIT_TEMPLATE_DIR
auf einen freigegebenen Ordner festgelegt haben, auf den alle zugreifen können).Dieser Vorlagenordner kann eine
info/exclude
Datei mit Ignorierregeln enthalten , die für alle Repos erzwungen werden sollen , einschließlich der neuen (git init
), die jeder Benutzer verwenden würde.Wie von Abdollah kommentiert
quelle
.gitignore
), können Sie diese Dateien nicht mehr einfach wieder hinzufügen.Fügen Sie die folgenden Zeilen in .gitignore ein und platzieren Sie die Datei in Ihrem Projektordner
quelle
Die Git-Lösung für solche Szenarien ist das Setzen von SKIP-WORKTREE BIT . Führen Sie nur den folgenden Befehl aus:
Es wird verwendet, wenn git Änderungen von Dateien ignorieren soll, die bereits von git verwaltet werden und im Index vorhanden sind . Dies ist ein häufiger Anwendungsfall für Konfigurationsdateien .
Das Ausführen
git rm --cached
funktioniert für das in der Frage erwähnte Szenario nicht. Wenn ich die Frage vereinfache, heißt es:Wie ich unter der akzeptierten Antwort kommentiert habe, besteht der Nachteil
git rm --cached
darin, dass der Index geändert wird. Sie müssen die Änderung also festschreiben und dann in das Remote-Repository übertragen. Als Ergebnis.classpath
und.project
nicht auf dem Repo zur Verfügung , während der PO will sie da sein , so dass jeder , dass Klonen den Repo zum ersten Mal, sie es verwenden können.Was ist SKIP-WORKTREE BIT?
Basierend auf Git-Dokumentation:
Weitere Details finden Sie hier .
quelle
Verwenden Sie eine Gitignore-Datei. Auf diese Weise können Sie bestimmte Dateien ignorieren. http://git-scm.com/docs/gitignore
Hier ist ein Beispiel für Eclipse, das Ihren Klassenpfad und Ihre Projektdateien verarbeitet: https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore
quelle
.gitignore
beim Repo einreichen , damit jeder sie verwendet. Auf diese Weise sollte niemand diese Dateien einreichen. .classpath und .project sollten niemals im Repo sein.