Pull, Rebase, Push, in einem Befehl (oder nur wenigen)

Lesezeit: 2 Minuten

Wenn ich Git verwende, mache ich oft Folgendes, wenn ich darin arbeite master:

# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git checkout master
$ git pull origin master
# turns out master was updated since my previous pull
$ git checkout temp
# I don't want a merge commit for a simple bugfix
$ git rebase master
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp

… und ich werde es leid, dies zu tun. Gibt es eine Möglichkeit, diesen Tanz ohne alle Checkouts und vorzugsweise ohne (manuelles) Erstellen des temporären Zweigs durchzuführen?

Benutzer-Avatar
Markus Longair

Wenn es Ihnen nichts ausmacht, erstellen Sie keinen Branch namens tempkönnten Sie einfach Folgendes tun master:

git commit -a -m 'more work done'
git fetch origin
git rebase origin/master

… oder gleichwertig:

git commit -a -m 'more work done'
git pull --rebase origin master

Wenn Sie die behalten möchten temp Zweig, aber Sie können dies immer noch etwas verkürzen, indem Sie nicht auschecken master nur um das zu tun pull – Sie müssen nur fetch und rebasieren Sie dann Ihren Zweig auf origin/master:

# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git fetch origin
# It looks like origin/master was updated, so:
$ git rebase origin/master
# Then when you finally want to merge:
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp

sehes Antwort erinnert mich daran, dass Sie Folgendes ersetzen könnten:

$ git fetch origin
$ git rebase origin/master

… mit:

$ git pull --rebase origin master

… welches ist fast gleichwertig. Der Unterschied ist, dass, wenn Sie laufen git fetch originalle Ihre Remote-Tracking-Zweige für origin aktualisiert wird, wohingegen, wenn Sie einen bestimmten Zweig aus ziehen originkeiner von ihnen ist es – es ist nur der temporäre Schiedsrichter FETCH_HEAD das ist aktualisiert. Ich persönlich ziehe es vor, einen zusätzlichen Befehl auszuführen (git fetch origin) und Anzeigen aller entfernten Branches, die sich in der Ausgabe geändert haben.

  • Groß! Ich wusste nichts über die --rebase Option, es scheint perfekt zu meinem Workflow zu passen.

    – Fred Foo

    26. September 2011 um 14:03 Uhr


  • Arbeite super für mich! Übrigens, wie können wir ignorieren unstaged/uncommitted changes?

    – Name G VU

    13. Oktober 2016 um 6:24 Uhr

Sie können zumindest das Rebasing optimieren: git pull --rebase

Ich bin mir nicht ganz sicher, wie Sie die Dinge mögen, aber ich mag meinen Workflow so:

git checkout -b temp
git commit -a -m 'more work done'
git pull --rebase origin master

So konzentriere ich mich auf die jeweilige Branche.

Später mache ich es dann

git checkout master
git pull origin master
git merge temp

usw.

1157880cookie-checkPull, Rebase, Push, in einem Befehl (oder nur wenigen)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy