由于各种原因(主要是代码审查),我需要经常从当前的开发分支切换到其他分支。
目前,我使用“git stash”来搁置未提交的更改,签出其他分支,然后切换回来并执行“git stash apply”
但是,有时我会在那里添加一些新添加的文件,这些文件没有被跟踪。不幸的是,存储不会影响它们。在这种情况下,我必须将它们添加到索引和存储中。
我在这里寻找的是一个工作流程,我必须执行最少的操作来切换分支,最好避免将文件添加到索引中。
由于各种原因(主要是代码审查),我需要经常从当前的开发分支切换到其他分支。
目前,我使用“git stash”来搁置未提交的更改,签出其他分支,然后切换回来并执行“git stash apply”
但是,有时我会在那里添加一些新添加的文件,这些文件没有被跟踪。不幸的是,存储不会影响它们。在这种情况下,我必须将它们添加到索引和存储中。
我在这里寻找的是一个工作流程,我必须执行最少的操作来切换分支,最好避免将文件添加到索引中。
您可以克隆存储库并查看/处理克隆。完成后删除克隆。如果您碰巧对分支/克隆进行了更改,则可以将它们推回。我认为本地克隆很便宜。即使不是,磁盘空间仍然比您的时间便宜。
您可以将 repo 克隆到另一个目录并默认为您想要的分支:
# assume your original repo is in myproj
$ git clone myproj myproj_clone --branch my_branch
如果您然后转到该myproj_clone
文件夹,它将在您的分支中
$ cd myproj_clone
$ git branch
* my_branch
我不确定克隆是正确的解决方案,但由于 2 个答案建议它在大脑上,所以我提供了对该主题的修改。克隆可能并不便宜。就磁盘空间而言,它是无关紧要的,但克隆本身需要几秒钟,这对于不必要的操作来说浪费了太多时间。作为替代方案,您可以简单地使用旧的 git 工作目录创建一个新的工作目录。即,如果您当前的工作目录是“a”(带有更改和未暂存的文件),请尝试:
$ mkdir ../b $ cd ../b $ echo 'gitdir: ../a/.git' > .git $ git checkout -f foo
现在 b 实际上是分支 foo 上的 a 的克隆,并且您有两个工作目录可供使用。在工作目录 b 中的分支 foo 上执行您需要的操作,然后返回到 a 并检查您离开时所在的分支。