2009-09-25 5 views
8

Manchmal bin ich in einem Feature-Zweig, aber ich habe eine unabhängige Änderung vorgenommen, die ich in Master sehen möchte. Oft kann ich nur tun:Wechseln von Zweigen in Git

git checkout master 
git commit -m "..." filename 

Aber manchmal, wenn ich die Kasse ich eine Warnung erhalten, dass es lokale Änderungen sind und somit kann ich nicht den Zweig wechseln.

Warum passiert das nur manchmal? Gibt es eine Problemumgehung, wenn ich diese Nachricht sehe? Vielleicht verstauen?

Antwort

15

Wie Devin Ceartas erwähnt, passiert dies, wenn beim Wechseln der Zweige einige Dateien geändert werden, die Sie bereits lokal geändert haben. (Git nicht beschweren, wenn Sie lokale Änderungen an einer Datei, die nicht geändert werden würde, oder neue Dateien hinzufügen, die auf existieren weder den Zweig noch Meister.)

Zwei Möglichkeiten, um diesen:

  1. "git stash" Ihre Änderungen, wechseln Sie zum Master und "git stash apply". Dann begehe die Änderung.

  2. Übernehmen Sie die gewünschten Änderungen in der Verzweigung, dann "git stash" alle anderen Änderungen (falls vorhanden), wechseln Sie zum Master und wählen Sie die Änderung am Master.

+5

Vier Möglichkeiten: 3. Sie können immer versuchen, 3-Wege-Merge mit "git checkout -m" zu machen, und 4. Sie können mit "git checkout -f" den Checkout (Verlust der Änderungen) erzwingen. –

0

Ich habe das auch gesehen. Ich denke, das Problem ist, wenn sich Ihre lokalen Änderungen mit etwas in der anderen Zweigstelle ändern (im Gegensatz zu einer neuen Datei, die nicht in der anderen Zweigstelle ist). Sie können den anderen Zweig immer in einem anderen Verzeichnis suchen.

+0

Wie können Sie einen anderen Zweig in einem anderen Verzeichnis suchen? –

+0

Suchen Sie nach Hilfe zu git-new-workdir, mit der Sie ein neues Arbeitsverzeichnis erstellen können, das von demselben Repo unterstützt wird. – Phil

+0

Ich sehe, es ist ein Skript in Contrib/Workdir in der Git-Git-Repo. Vielen Dank! –