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?
Wenn es Ihnen nichts ausmacht, erstellen Sie keinen Branch namens temp
kö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 origin
alle Ihre Remote-Tracking-Zweige für origin
aktualisiert wird, wohingegen, wenn Sie einen bestimmten Zweig aus ziehen origin
keiner 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.
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.