2016-04-07 10 views
1

Angenommen, ich habe 10 Commits auf myBranch gemacht (und myBranch ist ausgecheckt). Ich möchte mit Master requase und alle Commits quetschen.Wie verkürzt man den Umbasierungsworkflow?

unsere aktuellen Workflow ist ...

  1. git checkout master
  2. git holen Herkunft
  3. git ziehen -r origin master
  4. git checkout mybranch
  5. git -i Master rebase
  6. git push -f herkunft myBranch

Insgesamt 6 Schritte UND interaktive Rebase-Konsolen zu bewältigen (ganz zu schweigen von der Gefahr der Druckkraft).

Gibt es einen kürzeren Workflow, der den gleichen Effekt hat?

Antwort

2

Es gibt keinen Grund, Ihren lokalen Zweig master zu aktualisieren, wenn Ihr Ziel ist, einfach gegen den vorgeschalteten Zweig master zu rebasen. Sie können diese Schritte ersetzen:

git checkout master 
git fetch origin 
git pull -r origin master 
git checkout myBranch 
git rebase -i master 

mit:

git fetch origin 
git rebase -i origin/master 

Wenn Sie die interaktive Fütterungsmaterial vermeiden möchten, können Sie das tun, was in this answer beschrieben:

git fetch origin 
git reset --soft origin/master 
git commit -m 'message for merged commit' 

Dies setzt die Aktueller Zweig zu origin/master ohne Auswirkungen auf Ihr Arbeitsverzeichnis, und es lässt alle Ihre Änderungen im Index inszeniert. Dies bedeutet, dass die git commit alle Ihre Änderungen in einem einzigen Schritt festlegt.

1
git fetch origin 
git rebase -i origin/master 
git push -f origin myBranch 

oder wenn Sie wollen den Wechsel der Strophen auf allen Linien speichern und eine völlig neue verwenden wollen Commit-Nachricht

git fetch origin 
git rebase origin/master 
git reset --soft origin/master 
git commit 
git push -f origin myBranch 

oder wenn Sie den Wechsel der Strophen auf alle speichern möchten Linien und wollen die Commit-Nachrichten wieder zu verwenden aus aller zerquetscht

git fetch origin 
git rebase origin/master 
git reset --soft origin/master 
git commit --edit -m"$(git log --format=%B --reverse [email protected]{1})" 
git push -f origin myBranch 
2

verpflichtet Wenn alles, was Sie mit Ihrem lokalen Commits tun möchte, ist, sie zu zerquetschen, Sie brauchen nicht einmal eine interaktive rebase zu tun.Sie können es tun git reset --soft verwenden, die viel bequemer ist:

git reset --soft HEAD~10 #soft bis 10 zurückgesetzt begeht vor

git commit -m "Message for the squashed commits" #all Ihre Änderungen bereits

Sie

Dann an dieser Stelle in den Index aufgenommen werden, kann gegen die master Zweig der Fernbedienung rebase:

git fetch origin git rebase origin/master

Beachten Sie, dass das Zusammendrücken der Commits nur sicher ist, wenn niemand (außer Ihnen) diese 10 Commits von myBranch noch gezogen hat, sonst werden Sie die Geschichte umschreiben und Sie werden eine schlimme Zeit haben.

Verwandte Themen