Git: 如何在不丢失当前工作的情况下返回一个并进行修复?

Git: How to go back one and make a fix without losing current work?

我需要对一个版本做一个小的修复,但我已经(愚蠢地)留在我的 master 上并做了一个我不想丢失的提交。

我猜我应该让我当前的位置成为一个新分支,返回发布提交,修复它,保存该提交,然后转到新创建的分支并将其全部合并。

当然,我不知道该怎么做。

或者像这样的东西藏起来更好吗?

帮忙?谢谢。

首先,从您当前的工作创建一个分支:git checkout -b new_branch。然后回master:git checkout master。然后,从 master 重置为一次提交:git reset --hard HEAD~(你可以在 ~ 后面放一个数字来指定提交次数,但没有数字意味着 1 次提交。)然后 master 将返回一次提交,new_branch 将拥有您的新作品。查看两个分支上的 git log 以进行验证。

如果您想稍后再将 new_branch 的作品带入 master,请执行 git merge new_branch

您可以执行 interactive rebase,并使用 edit 命令在提交中进行您想要的修复。所以,就好像你从来没有犯过那样的错误。

键入 git rebase -i <release-commit-hash>

默认编辑器打开(可能 Vim);对于 , select edit 命令。

修复你需要的文件,然后用git add .添加它们。
然后,修改为 git commit --amend.
最后,输入 git rebase --continue 继续。