2016-04-07 7 views
1

Angenommen, ich arbeite an einem gemeinsamen Repo. In diesem Repo ist eine defaults.js Datei, die verschiedene URLs angibt. Wenn ich den Repo lokal kloniere, ändere ich einige dieser URLs so, dass sie auf Dienste verweisen, die lokal ausgeführt werden. Wie kann ich diese URLs auf die lokalen Werte setzen, während ich neue Updates aus der Ferne abrufe?Halten Sie lokale Änderungen in Git beim Ziehen aus der Ferne

Bisher habe ich glücklich gewesen (naiv?) Mit der Methode here beschrieben

git stash 
git pull 
git stash pop 

aber während dies heute versuchen, erhielt ich einen

KONFLIKT (Inhalt): Merge Konflikt in config/defaults.js

Da wir eher rebase als fusionieren, wollte ich nicht chaotisch verschmilzt Beginn der Erstellung, vor allem für etwas so trivial. Also habe ich einfach zurückgesetzt, meine Änderungen so lokal gespiegelt remote gemacht und dann die URLs wieder manuell geändert. Natürlich möchte ich das nicht weiter machen, was ist der bevorzugte Ansatz?

Die Lösung in der Verbindung sagt oben einfach

git checkout --theirs -- defaults.js 

weil Sie wissen, dass das, was Sie in der stash ist das, was Sie wollen. Aber das stimmt nicht in meinem Fall, ich möchte eine Verschmelzung von mir und ihren, ohne tatsächlich zu verschmelzen.

+0

Suchen Sie eine * git only * Lösung? Vielleicht ist es möglich, ein nicht verfolgtes local.js zu haben, das die benötigten URLs überschreibt – Francesco

Antwort

1

Solange Sie einen anderen Status als origin pflegen, den Sie nicht festgeschrieben haben möchten, werden Sie Konflikte wie diese bekommen, und die Dinge, die Sie bereits versuchen, sind so ziemlich die einfachsten Wege repariere es.

Es gibt ein paar sauberere Möglichkeiten für eine gute löst, die mit Git vermeiden futzing:

  1. Wenn Sie Umgebungsvariablen gesetzt defaults.js verwenden können bis diejenigen zu bevorzugen und fallen zurück auf einen anderen Standard in der enthaltenen Datei. Dann können Sie Ihre lokale ENV anders einstellen als Ihre Mitarbeiter oder Produktion.

  2. eine local-defaults.js Datei einrichten, die über defaults.js (Optionen entweder Groß- oder durch die Zusammenlegung) bevorzugt ist, und fügen Sie es .gitignore so ist es nicht verpflichtet. Dann kann jeder seine eigene Datei mit den Überschreibungen behalten, die sie benötigen.

dieser Beide sind eine Codeänderung - effektiv ein neues Feature - aber als Teamgröße jeder glücklich sein wird wächst sie zur Verfügung richtige Anpassung haben, ohne durch den stash Tanz zu kämpfen zu haben.

Verwandte Themen