我有一个特性分支,我们称之为 feature/JIRA-1000。
在这个分支上,我提交了一条消息为“it works.”的 commit。
接着,我对代码进行了重构,并将更改作为“Refactoring”提交。然而,后来我意识到这些更改应该作为另一个任务(JIRA 2000)的一部分,在另一个分支上完成。于是我在 JIRA 上创建了一个新分支 feature/JIRA-2000,基于 feature/JIRA-1000。这个新分支包含了 “It works” 和 “Refactoring” 的 commit。
然后,我想从 feature/JIRA-1000 分支中删除 “Refactoring” 的 commit。因此,在 Gitkraken 中,我右键点击了 “It works” 的 commit,选择了 “Reset -> hard”。我也尝试过在 Git Bash 中执行上述操作。
接着,我对代码进行了重构,并将更改作为“Refactoring”提交。然而,后来我意识到这些更改应该作为另一个任务(JIRA 2000)的一部分,在另一个分支上完成。于是我在 JIRA 上创建了一个新分支 feature/JIRA-2000,基于 feature/JIRA-1000。这个新分支包含了 “It works” 和 “Refactoring” 的 commit。
然后,我想从 feature/JIRA-1000 分支中删除 “Refactoring” 的 commit。因此,在 Gitkraken 中,我右键点击了 “It works” 的 commit,选择了 “Reset -> hard”。我也尝试过在 Git Bash 中执行上述操作。
$ git checkout feature/JIRA-1000
Already on 'feature/JIRA-1000'
Your branch is up to date with 'origin/feature/JIRA-1000'.
$ git reset --hard f9ef772b188ae359a77804b63a79aa542fd44e6b
HEAD is now at f9ef772 SERDOC-1000 It works
$ git push -f
Everything up-to-date
但是现在出现了问题:我的本地文件没有改变。
我做错了什么?
Gitkraken可能弄错了些什么,因为我相信当我第一次运行命令时有一些未暂存的更改,并且我可以看到一个提交条目,上面写着:
Merge remote-tracking branch 'origin/feature/JIRA-1000' into feature/JIRA-1000
我在分支历史记录的顶部。但无论如何,JIRA-2000现在应该是这样的。我只是不能将JIRA-1000恢复到我想要的状态。
编辑: 我不小心重复了对JIRA-2000分支(我不想重置的新分支)的硬重置。在这种情况下,硬重置确实重置了我的本地更改。(幸运的是,我能够通过再次硬重置到“重构”提交来撤消这个操作)。那么也许我的JIRA-1000分支出了点问题?
git push -f
命令。 - Mad Physicist