Git 恢复然后提交,但希望在恢复之前保留修订

标签 git git-revert

我的提交已经推送到了 Github,比如说

A > B > C > D > E -- 头部

我想恢复到 B ,所以我使用

git reset --hard <B:Hash>

现在,它看起来像

A > B——头部

所以,如果我使用 git push --force 将其推送到服务器,我在存储库中丢失了 C、D、E

如何恢复文件并提交为最后一个修订版,例如 A > B > C > D > E > F

F = 恢复:B

我无法使用git commit因为它说没有要提交的文件。

最佳答案

试试这个:

git checkout B
git reset --soft E
git commit -m 'Reverted to B'

checkout 命令将更改工作树和索引以匹配提交 B。使用 --soft 重置将更改当前分支指向的提交,而不影响工作树或索引。换句话说,在reset命令之后,索引将处于与B提交完全相同的状态。


您还可以使用git revert B..E,它会做同样的事情,只不过它会为每个还原的提交创建一个新的提交。如果您希望在一次提交中进行还原,只需添加 -n 选项 (git revert -n B..E),Git 就会将还原应用到工作中目录和索引。提交结果以完成还原。

关于Git 恢复然后提交,但希望在恢复之前保留修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254733/

相关文章:

git - 错误 : Reverting is not possible because you have unmerged files

git 还原几个特定的​​提交

java - JGit 将 Repo A merge 到 fork 版本 repo B 中,其中 A 领先于 B

git - 从 Git pull 请求中删除文件

git 删除除部分文件外的所有文件

git - 3 向 merge 无法与 git 比较 4

git - 如何使用 'git reset --hard HEAD' 恢复到之前的提交?

git - 如何将包含还原提交的主 merge 到分支

git - 您如何 merge 已还原的提交?

git - 最近更新后在 pycharm 中运行 git 时出错