我开始研究一个新特性,在编码了一段时间后,我决定这个特性应该属于自己的分支。

如何将现有未提交的更改移动到新分支并重置当前分支?

我想重置当前分支,同时保留新功能的现有工作。


当前回答

选项1(现有分支)

git stash (from main/any-branch)
git checkout your-existing-branch
git stash apply 

选项2(创建新分支)

git switch -c your-new-branch

其他回答

选项1(现有分支)

git stash (from main/any-branch)
git checkout your-existing-branch
git stash apply 

选项2(创建新分支)

git switch -c your-new-branch

常见的情况如下:我忘记为新功能创建新分支,而在旧功能分支中执行所有工作。我已将所有“旧”工作交给了主分支,我希望我的新分支从“主”分支中成长。我还没有对我的新工作作出任何承诺。分支结构如下:“master”->“Old_feature”

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply

更新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,然后提交。

或者:

将当前更改保存到临时存储:$git存储基于此存储创建新分支,然后切换到新分支:$git stash branch<new branch>stash@{0}

提示:使用tab键可以减少键入存储名称。

这可能有助于所有使用GIT工具的人

命令

切换分支-它会将您的更改移动到新分支。然后您可以提交更改。

 $ git checkout -b <new-branch>

乌龟GIT

右键单击存储库,然后使用TortoiseGit->切换/签出

源代码树

使用“签出”按钮切换分支。单击分支后,您将看到顶部的“结帐”按钮。来自当前分支的更改将自动应用。然后你就可以提交它们了。