乐闻世界logo
搜索文章和话题

如何恢复多个 Git 提交?

5 个月前提问
4 个月前修改
浏览次数40

1个答案

1

在Git中恢复多个提交可以通过多种方式完成,您选择的方法取决于您希望达到的具体目标。以下是几种常见的情况和恢复方法:

1. 使用 git revert 批量恢复

如果您想要撤销一系列提交对代码库的影响,并且想要在历史中保留这些撤销的记录,可以使用git revert命令。例如:

shell
git revert <commit-hash-1>^..<commit-hash-2>

在这个命令中,^ 表示包含 <commit-hash-1>,但不包含 <commit-hash-2>

例子: 假设您提交了三个连续的提交,它们的哈希值分别是abc123def456,和ghi789,并且您现在想要撤销这三个提交。您可以按照如下方式操作:

shell
git revert abc123^..ghi789

git revert会为要撤销的每个提交创建新的提交。如果在执行这个命令时遇到合并冲突,您需要手动解决冲突,然后继续使用git revert --continue

2. 通过创建新的分支

如果您想要放弃一系列的提交,并在某个特定的提交上开始新的工作,可以创建一个新的分支:

shell
git checkout -b <new-branch-name> <commit-hash>

例子: 如果您想要放弃最新的几个提交,并重新开始工作,可以这样做:

shell
git checkout -b new-start def456

这里def456是您想要回退到的最后一个好的状态的提交。这样会创建一个新的分支new-start,并以def456为起点。

3. 使用 git reset

如果您想要彻底地撤销一系列提交,并且不希望在历史中保留这些撤销的痕迹,可以使用git reset命令:

shell
git reset --hard <commit-hash>

例子: 假设您最后一个好的提交哈希是def456,您想要撤销此后所有的提交:

shell
git reset --hard def456

这将会重置当前分支的HEAD到def456,并且所有在它之后的提交都将被删除。这个操作不可逆,因此请确保这是您想要的操作。

在所有情况下,如果您已经推送了这些提交到远程仓库,并且其他人可能已经基于这些提交做了工作,您应该非常谨慎地进行这样的操作。如果确实需要在远程仓库进行这样的操作,您可能需要执行git push --force来覆盖远程分支的历史,这会对其他协作者产生影响。

在进行这些操作之前,确保您完全理解每个命令的含义和潜在的影响,并且最好是在备份了当前仓库的情况下进行。

2024年6月29日 12:07 回复

你的答案