Reputation: 34120
I started to rewrite some of the Perl programs from the NASM source files. I have already done a few commits to my own working copy, and I was wondering if, instead of doing git pull
, I should have been doing git rebase
.
I have pretty much decided that I should have been doing a git rebase
, but I don't know how to rework my repository to achieve that effect, or even if it is possible.
Upvotes: 7
Views: 11430
Reputation: 202505
It is possible, and the Git Magic tutorial will explain how to do it. But if anyone else has seen your branch, it is unsafe. Even if nobody else has seen your branch, let me urge you to reconsider.
The purpose of rebasing is to rewrite history so that your repository reflects the way you believe your software should have evolved instead of the way it actually did. When is this important? When you are a junior member of a distributed development team, and you don't have commit privileges—instead, all you can do is submit patches to a gatekeeper and hope that they are accepted. To maximize the chances of acceptance, you want to rewrite history to make your patches as clean and clear as possible. Is the development model sounding familiar?
Manoj Srivastava has written a fairly thoughtful analysis of rebase-vs-merge.
Upvotes: 6
Reputation: 15444
As a followup to Dustin's reply, it should be "git config --global branch.master.rebase true".
Upvotes: -1
Reputation: 16732
git log
git reset HEAD^
Next time I recommend to do a git fetch
and then the rebase as step 3.
I would recommend to create a small tarball of your current git repo, just in case the rebase goes wrong. You'll do that less often when you feel more confident (and usually you can fix almost everything with git, but sometimes the tarball is faster).
Upvotes: 2
Reputation: 73625
You should be able to undo your last merge by changing the branches like this:
git branch your-changes <reflog of "Reworked test files...">
git branch -f master remotes/origin/master
After that you can try rebasing.
Upvotes: 0
Reputation: 43996
I've had success with the following method in the past:
For this method, I have added the following alias:
up = pull --rebase origin
When pulling in changes from the remote repo:
YMMV
Upvotes: 2