Re: git undo # last command

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Aug 16, 2013 at 3:26 PM, Jeff King <peff@xxxxxxxx> wrote:
> On Fri, Aug 16, 2013 at 10:55:06AM +0200, Saša Tomić wrote:
>
>> it just occurred to me -- the command that I would REALLY like to have
>> is simple:
>>
>>   git undo
>>
>> which 'undo'es the last action that has not been pushed yet --
>> whichever the action is. Similarly to the 'back' button in the
>> browser.
>
> One problem with such simplicity is that you need to define what an
> "action" is. If I make a commit, the undo is probably "reset HEAD@{1}".
> If I fetch a ref, would undo move backwards? What if I fetch multiple
> refs with one command; do we undo all of them? How about during a
> multiple-command operation, like a rebase? Does an undo affect the last
> commit, or the whole rebase?
>
> I think these questions can be answered (though I am not sure of the
> best answer for most of them, nor even if there is a single answer that
> covers all situations), but I think a starting point for any "undo"
> command would be coming up with a list of what constitutes an action,
> how we record the list of actions, and then an appropriate "undo"
> reaction for each action.
>
> -Peff


Simplicity rarely comes for free. But simplicity may not mean the same
to a new git user, and to an experienced git user or developer.

The beauty of "undo" operation/action is that there is only one
command to be learned. Whatever you do, you can "undo".
git commit ==> git reset --soft HEAD^
git add <file> ==> git reset HEAD <file>
git add <directory> ==> git rm -r --cached <directory>

However, the command that you have to do may not be easy to find in
documentation or online.

A simple workaround, that I several times employed, is to make a
backup of the repo, and to play with the repo after that. If anything
goes wrong, I restore the backup.

But git should not force me to do this. Git clearly can do more and better.

Anyway, I believe that "undo" should revert the *last* command typed
in and executed by the user, even if it's a multi-step operation such
as rebase. Of course, it would be of great help even if a user has to
run "git undo" several times for one "git rebase". You're certainly
more experienced with git under the hood, so you know which one is
easier to implement.

I would be happy to help in making a list of actions and corresponding
undo "reactions".

-- st
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]