我知道这类问题有很多重复项,但我想打开一个新问题,因为我没有在所有其他问题中找到按照我想要的方式执行此操作的最佳方法的解释。
我知道我可以通过执行以下操作来恢复并保留历史记录:
git reset --soft c14809fa
我想恢复development
分支并将历史记录保存在不同的分支上。
如果我结帐development
在我恢复提交之前到一个新分支 - 例如
git checkout -b beforeRevert
然后我将签回开发分支并进行重新审核(因为我想继续处理我已恢复到的提交中的数据)
另一个分支,beforeRevert
分支,将保留“恢复之前”的所有历史记录和数据,有一天会再次使用,但不会包含在当前分支中development
分支?或者恢复到development
分支会以某种方式影响beforeRevert
branch?
如果您确定软重置或创建多个分支都不适合您的用例,您可以这样做
git diff HEAD commit_hash_to_go_to | git apply
这将在分支上的最新提交和具有所需状态的提交之间创建更改差异,并自动应用它。这只会更改文件,您的工作是将它们添加到暂存并提交结果。
如果您想尝试不同的解决方案并将更改历史记录保留在同一分支内或避免增加本地分支,这可能很有用。
如果遇到“无法在没有完整索引行的情况下应用二进制补丁”错误,请添加 --binary 标志:
git diff HEAD commit_hash_to_go_to --binary | git apply
在执行此操作之前,请确保您没有未提交的更改 - 否则补丁将不会被应用(它是原子的,所以要么所有更改都会通过,要么没有,所以您不会最终处于不一致的状态)
注意:这只是更改文件并将其标记为已修改。它不会改变提交历史记录或创建新的提交
提示:如果您只想撤消最后一次提交,您可以这样做
git diff HEAD HEAD~1 | git apply
“~1”是您想要返回的提交量。在这种情况下,只有 1 次提交。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)