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

发布于 2024-12-02 12:25:01 字数 328 浏览 0 评论 0原文

我的提交已经推送到了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与风相奔跑 2024-12-09 12:25:01

试试这个:

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

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


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

Try this:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文