On Mon, Apr 28, 2025 at 4:12 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > When 'X' is a new branch I am creating to automatically (as the > default for branch.autoSetupMerge is true these days) track the > corresponding branch at the upstream, this output ... > > $ git branch [-f] X origin/X > branch 'X' set up to track 'origin/X'. > > ... from the command, with or without -f, makes perfect sense. > > It also makes sense if we reset the tip of 'X' to a slightly older > commit on the branch, i.e. after doing the above, running > > $ git branch -f X origin/X~4 But why not use `git reset --hard origin/X~4` here? (Answering myself: presumably because this version works whatever the current branch is.) > > does not say anything. The branch is still set up to track > origin/X after doing the above two operations. > > However, after doing these, and 'X' is _already_ tracking its > corresponding branch at the upstream, resetting the branch with '-f' > again will give us the same message as the first one: > > $ git branch -f X origin/X > branch 'X' set up to track 'origin/X'. > > and I think it is wrong for at least two reasons: > > * Does it make sense to say "set up to track" in this case? If X > used to be set to track nothing or some other branch, and if we > changed the tracking information with the command, the existing > message may make sense, but otherwise, I would say the current > message is useless, and it is unnecessarily frustrating, because > those who see the message may start to wonder what it was set to > track before, but at that point, that information is long lost. The other perspective is that - it's nice to know the tracking is setup; if I'm used to seeing that message and I don't, I might wonder where the tracking has gone? - use of -f is enough consent to lose the "what was there before" Though, it might still be nice to do the following [reordered] > - We may want to extend the "branch X set up to track origin/X" > message so that the message mentions what X used to track, or the > fact that X tracked nothing. This might be "noisy" for confident users, but seems like a nice QoL improvement to me. > - We should give another message when "git branch -f X" resets the > commit an existing branch X points at. Unlike "what was X > tracking?" that is forever lost (hence the previous suggestion), > what X used to point at can be found out as X@{1}, so it is not > necessary to give the exact commit, but the fact that the branch > existed already may be significant (especially if you habitually > use "branch -f X" whether X exists or not). Taking inspirations > from "git checkout -B X origin/X" that says "Switched to and > reset branch 'X'", perhaps "Reset branch 'X'" may be a good place > to stop. Didn't I see you recently suggest someone drop the habit of unnecessary -r in rm? [1] :) This seems similar to me: don't use unnecessary -f as a habit. I would personally find it noisy, but again for newer users it may be helpful. I can't judge that well (only that it would lose some "silence means success"). [1]: https://lore.kernel.org/git/xmqqecxk3u5l.fsf@gitster.g/ -- D. Ben Knoble