2014-11-10 13 views
16

Ich möchte eine overrides.json hinzufügen. Dadurch können Entwickler Änderungen an einem Konfigurationsobjekt lokal vornehmen. Ich möchte, dass es zum Repository in einem Standardzustand hinzugefügt wird, aber ich möchte, dass zukünftige Änderungen ignoriert werden.Fügen Sie eine Datei zu einem Git-Repository hinzu, ignorieren Sie aber zukünftige Änderungen.

Es scheint wie .gitignore zwingt ich es aus der Branche zu entfernen, bevor ich sie ignorieren kann. Ich weiß über git update-index, aber jeder Entwickler müsste dies manuell tun. Zur Klarstellung möchte ich nicht, dass die Datei entfernt wird. Ich möchte eigentlich, dass die Datei zum Repository hinzugefügt wird, aber danach nicht mehr verfolgt wird.

Ich kann es nicht einfach entfernen, weil GET Anforderungen an eine fehlende Datei hässliche Fehlermeldungen in der JavaScript-Konsole des Browsers wirft.

+1

konnten Sie nicht die Datei nur lesen und dann commit es? – saruftw

+0

Nein, ich möchte, dass Entwickler es lokal ändern. Dies würde zum Aktivieren von Dev-Typ-Features dienen, sie aber aus der Produktionskonfiguration heraushalten. –

+0

möglich Duplikat [Git ignorieren lokale Änderungen nachverfolgt Dateien] (http://stackoverflow.com/questions/21756531/git-ignore-local-changes-to-tracked-files) – 1615903

Antwort

2

Ignorieren Sie es und fügen Sie es nicht dem Repo hinzu. Generieren Sie stattdessen eine Standardversion von dem Makefile des Projekts, wenn es nicht vorhanden ist. Angenommen natürlich, Sie haben ein Makefile oder irgendeinen Making- oder Build-Prozess.

+0

Das klingt wie es würde funktionieren, aber es ist nicht ideal. Wenn ich das machen würde, könnte ich genauso gut die Rails-Stil-Abschnitte (Entwicklung | Test | Produktion) in der Konfigurationsdatei verwenden. Dies ist jedoch eine AngularJS-App und hat keine andere Serverkomponente als nginx, so dass ich einen benutzerdefinierten Build-Prozess erstellen müsste und es zu diesem Zeitpunkt tun müsste. Es ist eine mögliche Lösung, aber Weg über Bord, wenn ich eine Lösung in Git finden kann. –

+0

Kann AngularJS die Datei auf der Clientseite erstellen? – SzG

+0

Nein, es ist ein Client-seitiges Javascript-Framework. –

19

Nachdem Sie die Datei hinzufügen, können Sie alle weiteren Änderungen ignorieren, indem Sie:

git update-index --assume-unchanged path/to/file 

Wenn irgendwann Sie entscheiden, dass Sie weitere Änderungen schieben müssen Sie wieder, indem Sie ändert sich lassen kann:

git update-index --no-assume-unchanged path/to/file 

Anstatt die Dateien im Repo hinzuzufügen, ignorieren Sie sie und fügen Sie sie an einem anderen Ort an, z. ein Setup-Verzeichnis. Auf diese Weise müssen die Entwickler nach dem Klonen des Repos einen Init-Schritt ausführen, der die benötigten Dateien an die richtige Stelle kopiert, wo sie ignoriert werden.

+0

Wie bereits erwähnt, müssen die Entwickler dies manuell tun. Ich kann dieses "- unverändert-unverändert" nicht zum Repository "schieben". Ich mache mir Sorgen, dass Entwickler einfach 'git add 'machen und ihre Änderungen werden in das Repository geschoben. –

+0

@BrennanCheung Nein, leider kenne ich keine gute Möglichkeit, die 'angenommen-unverändert'-Flagge zu propagieren. Aber sehen Sie meine aktualisierte Antwort für eine Problemumgehung. – dan

Verwandte Themen