我开始研究一个新功能,经过一段时间的编码,我决定这个功能应该在它自己的分支上。
如何将现有的未提交更改移动到新分支并重置当前更改?
我想重置当前分支,同时保留新功能的现有工作。
我开始研究一个新功能,经过一段时间的编码,我决定这个功能应该在它自己的分支上。
如何将现有的未提交更改移动到新分支并重置当前更改?
我想重置当前分支,同时保留新功能的现有工作。
使用以下内容:
git checkout -b <new-branch>
这将使您的当前分支保持原样,创建并签出新分支并保留所有更改。然后您可以使用以下命令进行提交:
git add <files>
并提交到您的新分支:
git commit -m "<Brief description of this commit>"
工作目录中的更改和索引中的更改不属于任何分支。这会改变这些变化的结果。
你没有 重启 你的原始分支,它保持不变。最后一次提交 <old-branch>
仍然是一样的。所以你 checkout -b
然后提交。
使用以下内容:
git checkout -b <new-branch>
这将使您的当前分支保持原样,创建并签出新分支并保留所有更改。然后您可以使用以下命令进行提交:
git add <files>
并提交到您的新分支:
git commit -m "<Brief description of this commit>"
工作目录中的更改和索引中的更改不属于任何分支。这会改变这些变化的结果。
你没有 重启 你的原始分支,它保持不变。最后一次提交 <old-branch>
仍然是一样的。所以你 checkout -b
然后提交。
或者:
将当前更改保存到临时存储:
$ git stash
基于此存储创建新分支,并切换到新分支:
$ git stash branch <new-branch> stash@{0}
提示:使用Tab键减少键入存储名称。
如果你一直在提交 在您编写代码时在主分支上,但您现在想要将这些提交移动到另一个分支:
将当前历史记录复制到新分支,同时带来任何未提交的更改:
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
警告: 看起来 git branch -f master origin/master
将 重置跟踪信息 为那个分支。所以如果你配置了你的 master
分支推到除了之外的某个地方 origin/master
然后该配置将丢失。
另一种方法是使用 这种重置技术。但是这些说明将丢弃您拥有的任何未提交的更改。如果你想保留它们,先将它们藏起来并在最后取出它们。
如果你提交它,你也可以挑选单个提交ID。当我开始在master中工作时,我经常这样做,然后想要在我推送到我的原点之前创建一个本地分支。
git cherry-pick <commitID>
如上所述,你可以用樱桃挑选做很多事情 这里,但这可能是一个用例。