我开始研究一个新特性,在编码了一段时间后,我决定这个特性应该属于自己的分支。
如何将现有未提交的更改移动到新分支并重置当前分支?
我想重置当前分支,同时保留新功能的现有工作。
我开始研究一个新特性,在编码了一段时间后,我决定这个特性应该属于自己的分支。
如何将现有未提交的更改移动到新分支并重置当前分支?
我想重置当前分支,同时保留新功能的现有工作。
当前回答
对于那些使用Visual Studio Community 2022(以及可能更早的版本)的用户,当您有未提交的更改,然后创建一个新分支时,您将看到如下对话框:
只需选择第一个选项将更改带到“[您的新分行名称]”,然后单击“继续签出”。将创建新分支,您可以继续在那里提交更改。
其他回答
更新2020/Git 2.23
Git 2.23添加了新的switch子命令,试图消除由于超负荷使用checkout(切换分支、恢复文件、分离HEAD等)而产生的一些混乱
从这个版本的Git开始,将checkout命令替换为:
git switch -c <new-branch>
行为相同且保持不变。
更新2020/Git 2.23之前
使用以下方法:
git checkout -b <new-branch>
这将使当前分支保持原样,创建并签出新分支并保留所有更改。然后,您可以在文件中暂存要提交的更改:
git add <files>
并向您的新分支机构承诺:
git commit -m "<Brief description of this commit>"
工作目录中的更改和索引中暂存的更改尚不属于任何分支。这将更改这些修改将结束的分支。
您不重置原始分支,它保持原样。<old branch>上的最后一次提交仍将保持不变。因此,您签出-b,然后提交。
选项1(现有分支)
git stash (from main/any-branch)
git checkout your-existing-branch
git stash apply
选项2(创建新分支)
git switch -c your-new-branch
如果您在编码时一直在主分支上进行提交,但现在希望将这些提交移到另一个分支,这是一种快速方法:
将当前历史记录复制到一个新的分支上,同时带来任何未提交的更改:git checkout-b<新功能分支>现在强制原始的“杂乱”分支回滚:(不切换到它)git分支-f<上一个分支><早期提交id>例如:git branch-f master原始/主或者如果您已经提交了4次:git分支-f主HEAD~4
警告:gitbranch-f master origin/master将重置该分支的跟踪信息。因此,如果您已将主分支配置为推送到源/主分支以外的其他位置,则该配置将丢失。
警告:如果在分支后重新创建基,则可能会丢失一些提交,这在这里进行了描述。避免这种情况的唯一方法是使用樱桃树创造新的历史。该链接描述了最安全的防傻瓜方法,尽管不太方便。(如果您有未提交的更改,您可能需要在开始时使用git stash,在结束时使用gitstash pop。)
或者:
将当前更改保存到临时存储:$git存储基于此存储创建新分支,然后切换到新分支:$git stash branch<new branch>stash@{0}
提示:使用tab键可以减少键入存储名称。
这可能有助于所有使用GIT工具的人
命令
切换分支-它会将您的更改移动到新分支。然后您可以提交更改。
$ git checkout -b <new-branch>
乌龟GIT
右键单击存储库,然后使用TortoiseGit->切换/签出
源代码树
使用“签出”按钮切换分支。单击分支后,您将看到顶部的“结帐”按钮。来自当前分支的更改将自动应用。然后你就可以提交它们了。