有没有办法恢复或撤销git拉,使我的源/回购将回到做git拉之前的旧状态?
我想这样做是因为它合并了一些我不想这样做的文件,但只合并了其他剩余的文件。我想拿回那些文件,可以吗?
编辑:我想撤销git合并澄清。
看到一些答案后,我这样做了
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
现在,我该怎么办?做git重置——难吗?我不想再搞砸了,所以问详细步骤?
查看您执行git pull命令的当前分支中的日志
git log
示例输出如下所示
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxa3dd0
Author: user <user@gmail.com>
Date: Tue Nov 23 20:19:58 2021 +0530
latest changes
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxd697b
Author: user <user@gmail.com>
Date: Tue Nov 23 17:45:44 2021 +0530
latest changes includes account details api
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxc0e6fa
Author: user <user@gmail.com>
Date: Tue Nov 23 17:02:39 2021 +0530
latest changes
复制您想要的最后一个提交id。例如,如果你的最后一个提交id是xxxxxxxxxxxxxxxxxxxxxxxxxc0e6fa(假设这个提交id是你执行git pull之前的最后一个提交id),并且在这个提交id以上的两次提交是在你的git pull命令之后进行的,那么使用这个提交id来获得之前的更改
git reset --hard xxxxxxxxxxxxxxxxxxxxxxxxxxxxxc0e6fa
这样做将删除该提交id之上的提交。在此之后,您将获得之前的更改,就像这样简单。
一个更现代的撤销合并的方法是:
git merge --abort
还有一种稍显古老的方式:
git reset --merge
在前面的回答中描述的老派方法(警告:将丢弃所有的本地更改):
git reset --hard
但实际上,值得注意的是,git merge——abort只相当于git reset——merge,前提是存在MERGE_HEAD。这可以在git帮助合并命令中读取。
git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.
失败的合并后,如果没有MERGE_HEAD,失败的合并可以用git reset -merge来撤销,但不一定要用git merge -abort来撤销,所以它们不仅是同一件事情的旧语法和新语法。这就是为什么我发现git reset -merge在日常工作中更有用。