我已经在branch1
中对代码进行了一些更改,但现在我需要将这些更改移动到另一个分支。从图形上看,我有:
master
|___develop
|___branch1
我需要将所有未提交的更改和未跟踪的文件移动到一个名为branch2
的新分支(该分支不存在):
master
|___develop
|___branch1
|___branch2
之后,我将只删除branch1
,因为它的所有更改已经推送,并保留branch2
中所有未提交的更改和未跟踪的文件:
master
|___develop
|___branch2
在SO中有很多类似的问题,但我仍然不确定我应该如何处理我的情况。一些人建议使用git stash
(如何将本地未提交的更改合并到另一个Git分支中?,将更改的文件移动到另一个分支以进行签入),在我的情况下,我想应该是:
git stash -u
git checkout develop
git checkout -b branch2
git stash pop
但是其他答案(将当前更改放入新的Git分支, 将未提交的更改移动到新分支)建议只需使用checkout
命令即可:
git checkout -b branch2
但我不确定这是否也会携带我的未跟踪文件。有一个更新的答案建议使用 switch
(将现有、未提交的工作移动到 Git 的新分支中),但我的 git
版本 2.17.1 没有这个命令。
任何帮助都将不胜感激。
switch
实际上与checkout
没有任何不同之处,而只是更准确地描述了checkout
功能的子集。restore
是另一个新命令,将执行switch
不支持的所有与checkout
相关的操作。在switch
和restore
之间,不应该有使用checkout
的必要,它可以被废弃。 - chepner