2017-07-19 3 views
0

Ich habe aus einer Remote-Filiale ausgecheckt und einige der Dateien geändert. Ich möchte sie jedoch beim nächsten Commit nicht hinzufügen, da sie nur für meine lokale Konfiguration gelten. Eigentlich möchte ich immer, dass sie nicht festgeschrieben werden. Aus diesem Grund habe ich git update-index --assume-unchanged auf diese Dateien angewendet. Aber jetzt habe ich Probleme mit aus Zweigen Überprüfung heraus, wo diese Dateien von meinem lokalen abweichen: enter image description hereWie git-Zweig mit lokalen 'angenommen-unverändert' Dateien zu überprüfen?

Wenn ich auf ‚Smart Checkout‘ klicken (das ist das, was ich brauche), wirft er einen Fehler: „Couldn‘ t checkout origin/master: Ihre lokalen Änderungen an den folgenden Dateien würden beim Auschecken überschrieben: " Auch wenn ich auf" Checkout erzwingen "klicke, wird Folgendes ausgelöst:" Ursprung/Master konnte nicht überprüft werden: Eintrag '.gitignore' nicht aktuell Kann nicht zusammengeführt werden. "

Also wie kann ich aus anderen Filialen auschecken, während lokale Änderungen beibehalten werden?

+1

Wie bei .gitignore können Sie lokale Ignore-Muster zu .git/info/exclude hinzufügen und behalten Sie die im Projekt – max630

+1

unverändert und was Sie eher benötigen ist [überspringen-worktree] (https://stackoverflow.com/a/13631525/2303202) – max630

+0

Sieht so aus, als ob skip-worktree das ist, wonach ich gesucht habe. Bitte überlege, ob du das beantworten kannst, damit ich es akzeptieren kann. – arslancharyev31

Antwort

2

Ich leite Menschen immer aus assume-unchanged, genau aus diesem Grund. Am besten finden Sie eine andere Möglichkeit, Ihre Änderungen aus dem Repo herauszuhalten.

Von Ihrer Fehlermeldung scheint es, dass die .gitignore Datei eine der fraglichen Dateien ist. Nicht geteilte/lokale Ignorierregeln gehören nicht in .gitignore; sie gehören in .git/info/exclude.

Andere Fälle müssen möglicherweise einzeln behandelt werden. Ein häufiger Fall wären lokale Konfigurationsdateien. Eine typische Lösung besteht darin, nur eine Vorlage zu steuern, mit der Erwartung, dass Entwickler die eigentliche Konfigurationsdatei lokal erstellen (auf einem Pfad, der entweder ignoriert wird oder außerhalb des Repo-Arbeitsbaums liegt).

Wenn Sie lokale/nicht freigegebene Versionen von Code haben, würde ich beginnen, die Gründe dafür erneut zu besuchen. Wenn es notwendig ist, dann ist die beste Lösung, einen Build-Prozess zu verwenden, mit dem Sie Code von außerhalb des Arbeitsbaums austauschen können.

Die Quintessenz ist, wenn Sie Git gesagt haben, die Datei auf einem Pfad zu verfolgen, wird es versuchen, genau das zu tun.

+0

Der Grund, warum ich mich mit all diesen Zeremonien beschäftige, ist, dass ich nur Bug-Fixing-Pull-Anfragen an verschiedene GitHub-Repositories senden möchte, ohne irgendwelche anderen Änderungen zu machen (wie build.gradle-Dateien in diesem Fall). Gibt es einen bequemeren Weg, das zu tun? – arslancharyev31

+1

Ich denke, ich würde es tun, indem ich Bugfixes mache, die ich auf Zweige teilen möchte, die im Upstream wurzeln (vermutlich in einem separaten Arbeitsbaum ausgecheckt), die ich dann wieder in meine eigenen Arbeitszeilen einfügen würde. –

Verwandte Themen