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

如果我做 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 push -f ...

不仅仅是Git Push。

这里是一个更简单的方式,回到以前的承诺(并保持它在一个不承诺的状态,与它做任何你喜欢):

git reset HEAD~1

所以,不需要承诺ID等等:)

我相信有些人可能来到这个问题,想知道如何回归他们在主人中所做的承诺的变化 - 也就是说,把一切都扔掉,回到起源 / 主人,在这种情况下,这样做:

git reset --hard origin/master

https://superuser.com/questions/273172/how-to-reset-master-to-origin-master

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

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

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

git reset --hard HEAD~1

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

你可以通过以下两个命令做到这一点:

git reset --hard [previous Commit SHA id here]
git push origin [branch Name] -f

它将取消您的前 Git 承诺。

如果你想保持你的变化,你也可以使用:

git reset --soft [previous Commit SHA id here]

然后,它会拯救你的变化。