我如何从我目前的状态转向在某个承诺上拍摄的截图?

如果我做 git 登录,那么我会得到以下输出:

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

我如何转向11月3日的承诺,即承诺0d1d7fc?


当前回答

选择您所需的承诺,并通过

git show HEAD
git show HEAD~1
git show HEAD~2 

直到你得到所需的承诺. 要使头点到这一点,做

git reset --hard HEAD~1

或 git reset --hard HEAD~2 或任何东西。

其他回答

在GitKraken,你可以这样做:

右键单击您要重新设置的承诺,选择: 重新设置此承诺/硬: 右键单击承诺再次,选择: 当前分支名称/ 按: 单击强度按:

注意:你需要小心,因为硬重新设置后所有的承诺历史都丢失了,这种行动是不可逆转的。

因为你的承诺被推远,你必须删除它们,让我假设你的分支正在发展,它被推到起源。

首先,你需要从起源中删除:

git push origin :develop (note the colon)

然后你需要发展到你想要的状态,让我假设承诺的哈希是EFGHIJK:

git reset --hard EFGHIJK

最后, push 再次发展:

git push origin develop

但是,这里被问及如何取消具体的承诺,在这种情况下,它是取消过去的三个承诺,回到11月3日的承诺。

你可以用下调来做到这一点:

git rebase -i HEAD~4

这将列出你的最后四个承诺。

现在你有取消命令的选项,你用 drop 文本这样做。

只需在键盘上点击我,并在承诺旁边,您要删除写下滴,而不是默认选择在键盘上,点击输出和 :wq

要确保承诺被删除,写下:

git log

你會看到,當滴滴被移除時,你得救的行為。

要将这些变化推到您的远程分支,请写下:

git push --force

尝试重定向到所需的承诺:

git reset <COMMIT_ID>

查看 COMMIT_ID 使用:

git log

这将将所有更改的文件重定向到未添加状态。

现在,您可以查看所有未添加的文件

git checkout .

要检查您的使用变更:

git log

更新

如果你有一個,只承諾在你的repo,嘗試

git update-ref -d HEAD

我已经尝试了很多方式来逆转Git的本地变化,如果你只是想逆转到最近的承诺状态,这似乎是最好的。

git add . && git checkout master -f

简短的描述:

它不会创建任何命令,因为 git revert 做. 它不会分开你的头像 git checkout <commithashcode> 做. 它将超越所有的本地变更,并删除所有的添加文件,因为最后的命令在分支。

我找到了一个更方便和简单的方式来实现上面的结果:

git add . && git reset --hard HEAD

HEAD 指向您当前分支的最新承诺。

它与 boulder_ruby 提出的代码相同,但我添加了 git add. 之前 git reset --hard HEAD 删除所有新的文件创建自最后的承诺,因为这是大多数人期望我相信,当转向最新承诺时。