Thread (8 messages) flat view 8 messages, 6 authors, 2016-06-15

Re: Recovering from commit --amend in rebase --interactive

From: Boaz Harrosh <hidden>
Date: 2016-06-15 22:48:53

On 06/01/2010 12:27 PM, Peter Krefting wrote:
Hi!

I am a frequent user of rebase --interactive, and sometimes I do change a 
commit to "edit", which presents me with an already committed change, which 
I can fix up, and do "git commit --amend" on.

However, sometimes I get conflicts during rebase. In some cases I have 
already seen that conflict, so rerere handles it for me. I am still dropped 
out of rebase to manually add the fixes, though.

The problem now is that is way too easy to just do a "git commit --amend" 
like in the case above, and thus overwriting the previous commit 
unintentionally.
The prints are clear enough.

If stop do to "edit" then it prints ... you do:
git commit --amend
git rebase --continue

If stop do to merge-conflict it prints ... you do:
git add ... (Note no commit command)
git rebase --continue

You should be getting used to it after a while, I promise you
Is there an easy way of working around the issue?


Last time this happened to me, I *did* notice my mistake as I entered the 
editor, since it came up with the previous commit's message. However, as the 
commit message file was in a good shape, I found no way to break out of the 
amend. 
What?!? no, why. Just empty out the message at editor and save. It will abort
any commit and do nothing. 
(For example with kwrite, ctrl-a, delete, ctrl-s, exit)

It does not matter if the commit as entered some default text for you or
not. When editor is done if file is empty (or all comments) then it will
abort and do nothing. Do not worry. The original commit is un affected.
The message is just extracted from the original commit put to a tmp file
and enter into editor. (its just a commit -c after all)
I ended up using "git reflog" to find out what I overwrote, then "git 
diff $commitid > savedpatch" to remember what the change that I mistakenly 
amended was, then "git checkout $commitid" and "git apply savedpatch" and 
"git add" on the changed files. What I am wondering if there is an easier 
way of recovering?
Boaz
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help