有没有办法恢复或撤销git拉,使我的源/回购将回到做git拉之前的旧状态? 我想这样做是因为它合并了一些我不想这样做的文件,但只合并了其他剩余的文件。我想拿回那些文件,可以吗?

编辑:我想撤销git合并澄清。 看到一些答案后,我这样做了

git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...

现在,我该怎么办?做git重置——难吗?我不想再搞砸了,所以问详细步骤?


当前回答

它的工作原理 首次使用:git reflog

找到你之前状态的SHA并make(以HEAD@{1}为例)

git reset --hard HEAD@{1}

其他回答

运行git pull执行以下任务,顺序如下:

git fetch git 合并

合并步骤将在配置中合并已设置的分支。您想撤消合并步骤,但可能不撤消取回(没有多大意义,也不应该是必要的)。

要撤消合并,使用git reset—很难将本地存储库重置到以前的状态;使用git-reflog找到之前状态的SHA-1,然后重置到它。

警告

本节中列出的命令删除所有未提交的更改,可能会导致工作丢失:

git reset --hard

或者,重置到一个特定的时间点,例如:

git reset --hard master@{"10 minutes ago"}

git reflog 这将生成一个如下所示的列表:

2cae310 (HEAD -> ArunJan, origin/ArunJan) HEAD@{0}: checkout:从a590c01f5c2b83adcb36049f3fd590a3244fa745移动到ArunJan a590c01 HEAD@{1}: checkout:从ArunJan移动到a590c01 2cae310 (HEAD -> ArunJan, origin/ArunJan) HEAD@{2}:重置:移动到HEAD 2cae310 (HEAD -> ArunJan, origin/ArunJan) HEAD@{3}:结帐:从4a41a0fa05b98b274f1477991c6a25313f38b1b2移动到ArunJan 4a41a0f HEAD@{4}:结帐:从ArunJan移动到4a41a0fa05b98b274f1477991c6a25313f38b1b2 2cae310 (HEAD -> ArunJan, origin/ArunJan) HEAD@{5}: reset:移动到2cae31078cdf1c8abac9068330b2ccdd3fc424e3 f830534 HEAD@{6}: pull origin ArunJan:由'ort'策略合并。 a590c01 HEAD@{7}:提交:项目创建任务 4a41a0f HEAD@{8}:提交:创建新项目 b6cb3c5 HEAD@{9}: checkout:从b6cb3c5e82aea4c64ab2a1f0c37e53695d21f194移动到ArunJan b6cb3c5 HEAD@{10}: checkout:从dev-server移动到b6cb3c5e82aea4c64ab2a1f0c37e53695d21f194 5eeaf3c (dev-server) HEAD@{11}: revert:恢复“项目创建并复制URL”

选择要恢复到的版本。例如,如果我想恢复到“项目创建任务”,我会选择ID b0168ee。接下来,运行以下命令将存储库恢复到该版本:

Git复位——硬a590c01

试着运行

git reset --keep HEAD@{1}

查看您执行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之上的提交。在此之后,您将获得之前的更改,就像这样简单。

与jkp的答案相同,但下面是完整的命令:

git reset --hard a0d3fe6

a0d3fe6是怎么找到的

git reflog

看看你想要撤销的点。