2013-03-21 19 views
6

Ich habe eine App.Local.config-Datei, für die jeder Entwickler eigene Einstellungen hat. Ich möchte nicht, dass diese Datei im GIT-Repo versioniert wird, wie jedes Mal, wenn sie durch andere Änderungen des Entwicklers überschrieben würde.GIT: Wie ignoriere ich Dateien beim Wechseln von Zweigen?

Also löschte ich die Datei aus dem Repo und fügte sie der Ignorierdatei hinzu. Aber jetzt, wenn Entwickler Zweige wechseln, wird App.Local.config aus ihrem lokalen Dateisystem gelöscht.

Letztlich möchte, was ich ist:

  1. neue Entwickler-Klone Repo, bekommt eine Startversion App.Local.config
  2. Entwickler Änderungen an App.Local.config macht. Git ignoriert Änderungen und nicht Bühne/Einchecken
  3. Dev schaltet Zweige, Änderungen an App.Local.config wird nicht verloren und Datei wird nicht gelöscht.

Wie kann ich das tun?

Danke.

+0

Wenn die Datei korrekt ignoriert wird, sollte sie beim Umschalten der Zweige nicht berührt werden. Erscheint es, wenn Sie 'git status' eingeben? –

+2

Es wird nur beim ersten Update für alle gelöscht. Sobald alle Repos auf dem neuesten Stand sind, bleibt die Datei erhalten und wird nicht gelöscht. – TheBuzzSaw

Antwort

6

Was wahrscheinlich passiert ist, dass Sie die Datei aus Ihrem Arbeitsbereich, aber nicht aus dem Index entfernt haben. Wenn du das getan hast, denkt das Git, dass das Entfernen dieser Datei eine Änderung ist und sie wird es dann entfernen.

Der Weg zu gehen, ist die Datei, die Sie nicht mehr mit

git rm --cached App.Local.config 

aus dem Index verfolgen wollen nicht zu entfernen, und dann diese Datei in die .gitignore Doing hinzufügen, dass Sie keine Probleme mehr haben werden mit die Datei

+1

@mswanson Wenn die Datei ignoriert wird, können Sie Zweige wechseln, wie Sie möchten - es würde nicht berührt werden. Sie haben also nur ein Problem: Stellen Sie den Entwicklern eine Vorlage für diese Datei zur Verfügung. Aber Sie sollten es aus dem GIT tun. – madhead

+0

Wenn die Datei ignoriert und aus dem Index die Änderungen an der Datei sind nicht verloren und die Datei wird nicht gelöscht – iberbeu

+1

@iberbeu Ich habe das gleiche Problem, aber die Datei war noch nie im Index. Ich habe einen neuen Zweig mit dem Flag --orphan gestartet, dann git rm --cached alles, ignorierte einige Dateien in .gitignore und committed. Diese Dateien verschwinden, wenn ich die Filialen auswähle und ich weiß nicht, wie ich das vermeiden kann! – splinter123

1

Scheint wie diese Datei einmal im Index war. So ist seine Löschung eine Änderung. Sie können es zu .gitignore oder .git/info/exclude hinzufügen und dann einfach auf jedem Entwickler-Rechner neu erstellen.

0

Sie git rm --cached App.Local.config nicht nur in verzweigen Sie arbeiten aber auch git rm --cached App.Local.config in der Branche wollen Sie wechseln, oder Sie verlieren Ihre App.Local.config, wenn Sie wechseln zurück in die Filiale Sie gearbeitet, wenn Sie in diesem Zweig verwenden verwenden sollten .

Verwandte Themen