我开始研究一个新功能,经过一段时间的编码,我决定这个功能应该在它自己的分支上 .
如何将现有的未提交更改移动到新分支并重置当前更改?
我想重置当前分支,同时保留新功能的现有工作 .
如果你提交它,你也可以挑选单个提交ID . 当我开始在master中工作时,我经常这样做,然后想要在我推送到我的原点之前创建一个本地分支 .
git cherry-pick <commitID>
如here所述,你可以使用樱桃挑选,但这可能是一个用例 .
或者:
$ git stash
$ git stash branch <new-branch> stash@{0}
提示:使用Tab键减少键入存储名称 .
常见的情况如下:我忘了为新功能创建新分支,并且正在旧功能分支中完成所有工作 . 我已将所有“旧”工作提交给主分支,我希望我的新分支从“主”增长 . 我没有单独提交我的新作品 . 这是分支结构:“master” - >“Old_feature”
git stash git checkout master git checkout -b "New_branch" git stash apply
使用以下内容:
git checkout -b <new-branch>
这将使您的当前分支保持原样,创建并签出新分支并保留所有更改 . 然后您可以使用以下命令进行提交:
git add <files>
并提交到您的新分支:
git commit -m "<Brief description of this commit>"
工作目录中的更改和索引中的更改不属于任何分支 . 这会改变这些变化的结果 .
您没有重置原始分支,它保持不变 . <old-branch> 上的最后一次提交仍然是相同的 . 因此你 checkout -b 然后提交 .
<old-branch>
checkout -b
编码时主分支上的 If you have been making commits ,但您现在想要将这些提交移动到另一个分支:
git checkout -b <new-feature-branch>
git branch -f <previous-branch> <earlier-commit-id>
例如:
git branch -f master origin/master
或者如果你做了4次提交:
git branch -f master HEAD~4
Warning: 似乎 git branch -f master origin/master 将重置该分支的跟踪信息 . 因此,如果您已将 master 分支配置为推送到 origin/master 以外的某个位置,则该配置将丢失 .
master
origin/master
另一种方法是使用this reset technique . 但是这些说明将丢弃您拥有的任何未提交的更改 . 如果你想保留它们,先将它们藏起来并在最后取出它们 .
5 回答
如果你提交它,你也可以挑选单个提交ID . 当我开始在master中工作时,我经常这样做,然后想要在我推送到我的原点之前创建一个本地分支 .
如here所述,你可以使用樱桃挑选,但这可能是一个用例 .
或者:
$ git stash
$ git stash branch <new-branch> stash@{0}
提示:使用Tab键减少键入存储名称 .
常见的情况如下:我忘了为新功能创建新分支,并且正在旧功能分支中完成所有工作 . 我已将所有“旧”工作提交给主分支,我希望我的新分支从“主”增长 . 我没有单独提交我的新作品 . 这是分支结构:“master” - >“Old_feature”
使用以下内容:
这将使您的当前分支保持原样,创建并签出新分支并保留所有更改 . 然后您可以使用以下命令进行提交:
并提交到您的新分支:
工作目录中的更改和索引中的更改不属于任何分支 . 这会改变这些变化的结果 .
您没有重置原始分支,它保持不变 .
<old-branch>
上的最后一次提交仍然是相同的 . 因此你checkout -b
然后提交 .编码时主分支上的 If you have been making commits ,但您现在想要将这些提交移动到另一个分支:
例如:
或者如果你做了4次提交:
Warning: 似乎
git branch -f master origin/master
将重置该分支的跟踪信息 . 因此,如果您已将master
分支配置为推送到origin/master
以外的某个位置,则该配置将丢失 .另一种方法是使用this reset technique . 但是这些说明将丢弃您拥有的任何未提交的更改 . 如果你想保留它们,先将它们藏起来并在最后取出它们 .