我是 git 新手,不知道如何解决这个问题。
我想撤消一系列特定提交(与单个文件相关),我们认为这些提交不是问题的良好解决方案,但我想保留此后引入的所有其他提交。
我不想只是编辑文件来删除那段代码,因为我觉得在这里恢复更明确并且可以更好地传达意图。
事情是这样的:
X -> Y -> X -> -X -> Y -> X -> X
其中 Y 指的是与该特定功能相关的提交,X 是我们希望保持完整的所有提交,最终为:
X -> X -> -X -> X -> X
我不确定 rebase 在这里如何工作,因为我不想只包含从某个点开始的所有提交。
cherry-pick 是更好的方法吗?
编辑:可能值得一提的是所有这些提交都是推送的。
最佳答案
如果您的提交尚未共享(仍然是存储库中的本地提交),您可以使用交互式 rebase 来修复错误
语法是: git rebase --interactive commit's hash (或者只是 git rebase -i commit's hash) 在您的情况下,假设您的第一个 x 提交的哈希值是 x1 (使用 git log 来 git 提交此提交的哈希代码),那么您可以使用: git rebase -i x1 对于要删除的每个提交,将 pick 替换为 drop 然后退出编辑模式(使用 ESC 键)并:wq
关于git - 恢复过去的 git 提交但保留自此以来引入的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912615/