2016-06-06 2 views
-1

Angenommen, ich habe eine Filiale alt, die mehrere tausend Commits zurückliegt.Wie kann ich Filialen effizient auf den neuesten Stand bringen? (Ziehen mit Rebase)

$ git branch -v 
* main [ahead 2] whatever 
    old [ahead 1, behind 3733] something else 

Um es zu neuesten Stand zu bringen Ich muss:

  1. git checkout old, die meine Arbeitskopie mehrere tausend Commits hinter
  2. bringt
  3. git pull -r, die
    1. git fetch
    2. bedeutet
    3. git checkout origin/HEAD, die mein Arbeitsverzeichnis Forwar bringt d Tausende von Commits, wahrscheinlich in der Nähe, wo ich war mit
    4. git cherry-pick $commit-id, beginnen, die erneut angewandt meinem something else begehen

Gibt es eine eingebaute Möglichkeit, diesen Workflow zu optimieren, so dass ich nicht habe vor und zurück zu gehen und Tausende von Dateiänderungen zu überprüfen, nur um sie später wieder rückgängig zu machen?

Antwort

1

Sie versuchen, so etwas wie dieses:

#forcefully replace old branch with the latest origin changes 
git branch -f old origin/old 
# switch to it 
git checkout old 
# bring the "something else" commit 
git cherry-pick [email protected]{1} 

Es ist jedoch nicht sehr schön Ansatz ist, und funktioniert nur für einzelne begehen.

Nicht sicher, warum willst du es, ist es eigentlich langsam, alte Filialen zu überprüfen? Normalerweise dauert es einige Sekunden.

+0

Ja, es ist langsam, oder ich hätte das nicht an erster Stelle gefragt :) aber ich kann mir vorstellen, dass eine Rebase oben auf dem aktuellen Zweig, gefolgt von einem Git-Zweig -f, funktionieren würde – badp

Verwandte Themen