Git 恢复然后提交,但希望在恢复之前保留修订
我的提交已经推送到了 Github,假设
A > B> C> D> E -- HEAD
我想恢复到 B ,所以我使用
git reset --hard
现在,它看起来像
A > B -- HEAD
所以,如果我用 git push --force 推送到服务器,我在存储库中丢失了 C、D、E
如何恢复文件并提交为最后一个修订版本 A> B> C> D> E> F
F = 恢复:B
我无法使用 git commit ,因为它说没有要提交的文件。
My commit is already push to Github, let say
A > B > C > D > E -- HEAD
I want to revert back to B , so I use
git reset --hard <B:Hash>
Now, it will look like
A > B -- HEAD
So, if I push it to the server with git push --force
, I lost C,D,E in repository
How can I revert the file and commit to be the last revision like
A > B > C > D > E > F
F = Reverted: B
I cannot use git commit
because it said there are no file to commit.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
checkout 命令将更改工作树和索引以匹配提交 B。使用
--soft
重置将更改当前分支指向的提交,而不影响工作树或索引。换句话说,在重置命令之后,索引将处于与 B 提交完全相同的状态。您还可以使用 git revert B..E,它会执行相同的操作,只不过它会为每个还原的提交创建一个新的提交。如果您希望在一次提交中进行还原,只需添加
-n
选项 (git revert -n B..E
),Git 就会将还原应用到工作中目录和索引。提交结果以完成还原。Try this:
The checkout command will change the working tree and index to match commit B. Reset with
--soft
will change the commit the current branch points to, without affecting the working tree or index. In other words, after the reset command, the index will be in exactly the same state as the B commit.You could also use
git revert B..E
, which will do the same thing, except it will create one new commit for each commit reverted. If you want the revert to happen in one commit, just add the-n
option (git revert -n B..E
) and Git will apply the reversion to the working directory and index. commit the result to finish the reversion.