# While working on "feature" branch,
# you suddenly need to go work on a hotfix:
$ git commit --all --message "Backup my feature work"
$ git checkout -b hotfix master
# You did your hotfix, and are ready to go back to feature
$ git checkout feature
$ git reset HEAD^
3条答案
按热度按时间tf7tbtn21#
一种选择,如mipadi所示,就是简单地使用
git stash
。另一种选择是简单地提交当前正在进行的工作,切换分支,然后当你准备切换回来时,做一个混合重置回到你以前的提交:
git reset HEAD^
会在你进行备份提交之前进行混合重置,你在备份提交中所做的所有更改都会恢复到你的工作副本。official Linux Kernel documentation forgit reset
(强调我的):重置索引但不重置工作树(即,* 保留更改的文件,但不标记为提交 *),并报告未更新的内容。这是默认操作。
gj3fmq9x2#
您可以使用
git stash
,它将保存您的更改,而无需创建提交。1首先,隐藏您的更改:
然后切换到另一个分支:
当你准备好了,回到你原来的分支并释放你的更改:
有关其他用例的更多详细信息和细节,请参阅上面链接的文档。
1从技术上讲,它确实创建了一个提交,但是
git stash
使用了一些魔法,所以你实际上看不到提交,而Git的工具知道如何正确处理这些伪提交。bnlyeluc3#
我知道这个问题很老了,我只想分享一个可以帮助你处理这种情况的技巧。实际上,您可以将其提交到分支,然后在以后撤消它。
1.提交到分支。(只承诺。不要推。)
2.如果您想继续在分支上工作,只需 checkout 并撤消上次提交,而不会丢失最新的更改。
注意--soft标志:这确保了未撤消的修订中的更改被保留。运行命令后,您将在工作副本中找到未提交的本地修改。
你可以阅读更多here。