Re: [PATCH/RFC] commit: new option to abort -a something is already staged
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Aug 20, 2018, 19:30 UTC
- Message-ID
- <20180820193007.GB31020@aiede.svl.corp.google.com>
- In-Reply-To
- <20180820154120.19297-1-pclouds@gmail.com>
Hi,
Nguyễn Thái Ngọc Duy wrote:
Show 7 quoted lines
> So many times I have carefully cherry picked changes to the index with > `git add -p` then accidentally did `git commit -am ....` (usually by > retrieving a command from history and pressing Enter too quickly) > which destroyed beautiful index. > > One way to deal with this is some form of `git undo` that allows me to > retrieve the old index.
Yes, I would love such an undo feature!
How would you imagine that this information would get stored? We can start with adding that and a low-level (plumbing) interface to it, to avoid being blocked on getting the user-facing (porcelain) "git undo" interface right. (Or we can go straight for the porcelain. It's fine for it to start minimal and gain switches later.)
[...]
Show 5 quoted lines
> Instead, let's handle just this problem for now. This new option > commit.preciousDirtyIndex, if set to false, will not allow `commit -a` > to continue if the final index is different from the existing one. I > don't think this can be achieved with hooks because the hooks don't > know about "-a" or different commit modes.
I frequently use "git commit -a" this way intentionally, so I would be unlikely to turn this config on. That leads me to suspect it's not a good candidate for configuration:
- it's not configuration for the sake of a transition period, since some people would keep it on forever
- it's not configuration based on different project needs, either
So configuration doesn't feel like a good fit.
It might be that I can switch my muscle memory to "git add -u && git commit", in which case this could work as a new default without configuration (or with configuration for a transition period). A separate commandline option "git commit -a --no-clobber-index" might make sense as well, since then I could pass --clobber-index to keep my current workflow. That would also follow the usual progression: introduce commandline option first, then config, then change default.
That said, I lean toward your initial thought, that this is papering over a missing undo feature. Can you say more about how you'd imagine undo working?
Thanks, Jonathan