Git: 如何在不接触工作目录的情况下切换分支?

Git: How to switch branches without touching working directory?

我正在处理一个临时分支 foo。对更改感到满意后,我想将 master(不是当前的)移动到 foo 的 HEAD。我认为在 Git 上这样做的常见方法是这样的:

git checkout master
git reset --hard foo

问题是当我执行 git checkout master 时,Git 修改了工作目录中的文件并且我的 IDE 变得疯狂。我必须关闭它并重新打开它。

我的第一个解决方法是:

git branch -D master && git checkout -b master

但这让我失去了 master 的上游设置。以下实际有效:

git branch -D master && git checkout -b master && git push --set-upstream origin master

但是命令太大了

是否有仅使用 Git 的更好选择?即不在路径中添加批处理文件或宏...

git switch -C master

这会将 master 移动到当前 HEAD,保留分支具有的任何配置,例如其上游,然后对该分支执行 git checkout