From: Xavier Morel Date: Wed, 09 Feb 2022 13:46:37 GMT Subject: Re: branch.autoSetupMerge option for "if name matches only"? Message-ID: In-Reply-To: I found this message when trying to see if someone had already suggested something along those lines. In fact I would be even more restrictive: what I wanted to propose was to only automatically setup the merge on implicit remote tracking branches, that is: git switch foo if there is no such branch locally will look for the corresponding branch in the remotes, and will create a matching local one. In that case it makes a lot of sense to create a remote-tracking branch: when implicitly checking out a remote branch, it's likely the goal is to track it. The issue is that git switch -c bar foo will do the same, despite explicitely creating a differently named branch, which is probably some sort of feature which needs to be remote-ed somewhere else. If this issue is not caught immediately it is possible to push directly upstream by mistake. Upon reading the documentation of `git switch` I actually believed this would behave correctly given `autoSetupMerge=false`: --guess, --no-guess If is not found but there does exist a tracking branch in exactly one remote (call it ) with a matching name, treat as equivalent to $ git switch -c --track / Because `--guess` is the default for the `git switch ` form, this description made me believe the tracking would be forced. Sadly it is not so, setting `autoSetupMerge=false` will also disable automatic remote-tracking on guessed branch. As far as I'm concerned, `git switch` actually behaving as documented would resolve the entire issue (especially if it were possible to disable `git checkout` somehow, such that I would have to force muscle memory). This is made more annoying because git switch -t foo *does not work*, frustratingly (if as documented, this time) `-t` implies `-c`. So it's not even possible to remember to type `git switch -t remotebranch` and then live happily with `autoSetupMerge=false`. This makes `autoSetupMerge=false` a lot more frustrating that necessary.