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

如果我做 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 rev-list -n 1 --before="2009-07-27 13:37" origin/master

它打印承诺识别器,采取线(例如XXXX)并:

git checkout XXXX

返回(或逆转):

1. git revert --no-commit "commit-code-to-remove" HEAD
(e.g. git revert --no-commit d57a39d HEAD)
2. git commit
3. git push

尝试上面的两个步骤,如果你发现这是你想要的,那么 git push。

如果你发现什么是错误的,做:

git revert --abort

可以用 Sourcetree 做得更容易。 只需正确点击承诺,您正在寻找并从菜单中选择“检查”。

此分類上一篇

git reflog

选择 git reflog 的 HEAD(s) 号码,您要转向和做(为此示例,我选择 12):

git reset HEAD@{12} --hard

我发现最不复杂的方式,把一个分支转向任何特定的承诺,在那里你不能改变历史,就是:

查看承诺或分支您的愿望转向. 编辑.git/HEAD 并更改转向您转向的分支。

如如:

echo 'ref: refs/heads/example' > .git/HEAD

如果你做 git 状态,你应该看到你所在的分支和你想转向的分支之间的所有变化。

如果一切都看起来很好,你可以承诺. 你也可以使用 git diff revert..example 确保它是相同的。