git rebase orthodontics
- From
jidanni@jidanni.org <jidanni@jidanni.org>
- Date
- Jan 7, 2009, 14:47 UTC
- Message-ID
- <87sknvxje8.fsf@jidanni.org>
In today's adventure we follow junior user me as he sets off in his first bumper car ride on the wrong side of git-rebase, wherein he discovers there are no guard rails. git version 1.6.0.6.
$ git branch * jidanni master $ git commit -m bla --allow-empty $ git rebase --interactive master (In the editor I change the single pick offered into a squash) grep: ....git/rebase-merge/done: No such file or directory Cannot 'squash' without a previous commit (OK, but the grep error being shown to the user is a bug.)
$ git show --abbrev-commit --pretty=raw jidanni master
commit 07aef4a...
tree 28f9caca33a8294d36b3d42f21ff472c6126da16
parent 3ad166e006afc3ce57a35b6ac650569e557b024a...
commit 3ad166e...
tree 28f9caca33a8294d36b3d42f21ff472c6126da16
parent 726f8d08e2f7642d56a568eb82a685de0da0baf7
$ EDITOR=cat git rebase --interactive master
pick 07aef4a This is a commit with No files, wow. bla.
# Rebase 3ad166e..07aef4a onto 3ad166e ...
Successfully rebased and updated refs/heads/jidanni.
(But it didn't. git show shows no change. ls -l shows
refs/heads/jidanni was not touched.
OK, it seems like all I am doing is changing
A jidanni
/
D---E---F---G master
into the same thing, a noop. But shouldn't it warn and quit, instead
of rewarding me with the success message? Let's try it the other way
around:
$ git checkout master
$ git rebase --interactive jidanni #Wherein one sees:
noop
# Rebase 07aef4a..3ad166e onto 07aef4a
Successfully rebased and updated refs/heads/master.
OK, now I have achieved
D---E---F---G---A master, jidanni
Observations:
When I tried a noop, it didn't say noop in the editor.
When I tried a yesop, it did say noop in the editor.
In both cases it gave the same success message.