Re: Should --update-refs exclude refs pointing to the current HEAD?
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Apr 17, 2023, 12:14 UTC
- Message-ID
- <98548a5b-7d30-543b-b943-fd48d8926a33@gmail.com>
- In-Reply-To
- <adb7f680-5bfa-6fa5-6d8a-61323fee7f53@haller-berlin.de>
Hi Stefan
On 17/04/2023 09:21, Stefan Haller wrote:
Show 22 quoted lines
> The --update-refs option of git rebase is so useful that I have it on by > default in my config. For stacked branches I find it hard to think of > scenarios where I wouldn't want it. > > However, there are cases for non-stacked branches (i.e. other branches > pointing at the current HEAD) where updating them is undesirable. In > fact, pretty much always, for me. Two examples, both very similar: > > 1. I have a topic branch which is based off of master; I want to make a > copy of that branch and rebase it onto devel, just to try if that would > work. I don't want the original branch to be moved along in this case. > > 2. I have a topic branch, and I want to make a copy of it to make some > heavy history rewriting experiments. Again, my interactive rebases would > always rebase both branches in the same way, not what I want. In this > case I could work around it by doing the experiments on the original > branch, creating a tag beforehand that I could reset back to if the > experiments fail. But maybe I do want to keep both branches around for a > while for some reason. > > Both of these cases could be fixed by --update-refs not touching any > refs that point to the current HEAD.
I'd use a detached HEAD for the "experimental" rebase and then update the branch if the rebase was successful. If you really want to use another branch you could try running "git commit --amend --only" before rebasing to update the commit date so the two branches don't point to the same commit.
We could add a command line option to restrict the branches that are updated by --update-refs but I'm not that enthusiastic about it.
> I'm having a hard time coming up > with cases where you would ever want those to be updated, in fact.
If a user using stacked branches creates a new branch and then realizes they need to fix something on the parent before creating any commits on the new branch they would want both to be updated. e.g. $ git symbolic-ref HEAD refs/heads/topic $ git checkout -b another-topic # fix a bug in topic - want topic and another-topic to be # updated $ git rebase -i --update-refs HEAD~2
Best Wishes
Phillip
> Any opinions? > > -Stefan >