Frage

begann ich einige Arbeiten an einem neuen Feature und nach der Codierung für ein bisschen, habe ich beschlossen, diese Funktion auf einer eigenen Niederlassung sein sollte.

Wie bewege ich die bestehenden unbestätigten Änderungen auf einen neuen Zweig und setze meine aktuellen?

Ich mag meinen aktuellen Zweig zurückgesetzt, während auf das neue Feature bestehende Arbeit zu erhalten.

War es hilfreich?

Lösung

Verwenden Sie die folgenden Schritte aus:

git checkout -b <new-branch>

Dies wird Ihren aktuellen Zweig lassen wie es ist, erstellen und eine Niederlassung Kasse und alle Änderungen hält. Sie können dann ein Commit machen mit:

git add <files>

und verpflichten sich zu Ihrem neuen Zweig mit:

git commit -m "<Brief description of this commit>"

Die Änderungen im Arbeitsverzeichnis und Änderungen im Index aufgeführt nicht gehört in jede Filiale noch. Dies ändert, wenn diese Änderungen würden in beenden.

Sie können Zurücksetzen Ihren ursprünglichen Zweiges, bleibt es wie es ist. Die letzte commit auf <old-branch> wird immer noch die gleichen sein. Daher checkout -b Sie und dann begehen.

Andere Tipps

Alternativ:

  1. Speicher aktuelle Änderungen in einem temporären Stash:

    $ git stash

  2. Erstellen Sie einen neuen Zweig auf der Basis dieser Stash und Umstellung auf die neue Filiale:

    $ git stash branch <new-branch> stash@{0}

. Tipp: Verwendung Tabulatortaste zur Verringerung des Stash Namen eingeben

Wenn Sie Commits gemacht haben auf dem Hauptzweig, während Sie codiert, aber Sie wollen jetzt diese Festschreibungen zu einem anderen Zweig verschieben:

  1. Kopieren Sie die aktuelle Geschichte auf einen neuen Zweig, entlang irgendwelchen unbestätigten Änderungen bringen auch:

    git checkout -b <new-feature-branch>
    
  2. zwingt nun den original "chaotisch" Zweig zur Zurückdrängung: (ohne es zu schaltend)

    git branch -f <previous-branch> <earlier-commit-id>
    

    Zum Beispiel:

    git branch -f master origin/master
    

    oder wenn Sie 4 Commits gemacht haben:

    git branch -f master HEAD~4
    

Achtung: Es scheint, dass git branch -f master origin/master wird die Tracking-Informationen zurückgesetzt für diesen Zweig. Also, wenn Sie Ihren master Zweig zu Push-to irgendwo anders als origin/master so konfiguriert haben, dann, dass die Konfiguration verloren.

Eine Alternative ist die Verwendung href="https://stackoverflow.com/a/1628584/99777">. Aber diese Anweisungen werden alle nicht bestätigten Änderungen verwerfen Sie haben. Wenn Sie diejenigen behalten möchten, verstauen sie zuerst und unstash sie am Ende.

Das gängige Szenario ist folgende: Ich habe vergessen, den neuen Zweig für die neue Funktion zu erstellen, und war die ganze Arbeit in dem alten Funktionszweig zu tun. Ich habe alle die „alte“ Arbeit an den Master Zweig verpflichtet, und ich möchte meinen neuen Zweig vom „Master“ wachsen. Ich habe nicht aus einem einzigen meiner neuen Arbeit zu begehen. Hier ist die Verzweigungsstruktur: "Master" -> "Old_feature"

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply

Ich benutzte @Robin Antwort & Auflistung aller, dass ich es tat,

git status                               <-- review/list uncommitted changes
git stash                                <-- stash uncommitted changes
git stash branch <new-branch> stash@{1}  <-- create a branch from stash
git add .                                <-- add local changes
git status                               <-- review the status; ready to commit
git commit -m "local changes ..."        <-- commit the changes
git branch --list                        <-- see list of branches incl the one created above
git status                               <-- nothing to commit, working tree (new-branch) is clean
git checkout <old-branch>                <-- switch back

Wenn der Repo mehr als ein Versteck hat, sehen, die man auf den neuen Zweig anwenden:

git stash list  
  stash@{0}: WIP on ...  
  stash@{1}: WIP on ...

und überprüfen Sie die einzelnen Stash durch,

git stash show stash@{1}

oder kontrolliert alle stashes auf einmal:

git stash list -p

Es ist eigentlich eine wirklich einfache Möglichkeit, dies jetzt mit GitHub-Desktop zu tun, dass ich nicht glaube, ein Merkmal vorher war.

Alles, was Sie tun müssen, ist Umstellung auf die neue Niederlassung in GitHub Desktop und es wird Sie auffordern, Ihre Änderungen auf dem aktuellen Zweig zu verlassen (die gebunkert wird), oder Ihre Änderungen mit Ihnen den neuen Zweig zu bringen. Wählen Sie einfach die zweite Option, die Änderungen an den neuen Zweig zu bringen. Sie können dann wie gewohnt begehen.

Dies kann für alle mit Werkzeugen für GIT hilfreich sein

Befehl

Schalter Zweig - es wird Ihre Änderungen an neuen Zweig bewegen. Dann können Sie Änderungen.

 $ git checkout -b <new-branch>

TortoiseGit

Rechtsklick auf das Repository und dann TortoiseGit- verwenden> Schalter / Kasse

eingeben Bild Beschreibung hier

SourceTree

Verwenden Sie die „Kasse“, um Schalter Zweig. Sie werden nach einem Klick auf einen Zweig der „Kasse“ Button oben sehen. Änderungen der aktuellen Zweig wird automatisch angewendet werden. Dann können Sie sie begehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top