git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Should --update-refs exclude refs pointing to the current HEAD?

From
PWPhillip 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
> 
Previous: Felipe ContrerasNext: Stefan Haller
Message 6 of 18 in “Should --update-refs exclude refs pointing to the current HEAD?”
  1. Stefan HallerApr 17, 2023
  2. Stefan HallerApr 17, 2023
  3. Kristoffer HaugsbakkApr 17, 2023
  4. Stefan HallerApr 17, 2023
  5. Felipe ContrerasApr 18, 2023
  6. Phillip WoodApr 17, 2023
  7. Stefan HallerApr 20, 2023
  8. Stefan HallerMar 5, 2024
  9. Junio C HamanoMar 5, 2024
  10. Elijah NewrenMar 6, 2024
  11. Stefan HallerMar 6, 2024
  12. Elijah NewrenMar 7, 2024
  13. Stefan HallerMar 7, 2024
  14. Elijah NewrenMar 9, 2024
  15. Stefan HallerMar 12, 2024
  16. Kristoffer HaugsbakkMar 7, 2024
  17. Elijah NewrenMar 7, 2024
  18. Stefan HallerMar 24, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.