我如何从我目前的状态转向在某个承诺上拍摄的截图?
如果我做 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重新设置选项:
git reset --hard <commitId> && git clean -f
这对我来说是最好的选择!它是简单的,快速和有效的!
** 注意:** 如在评论中提到的,不要这样做,如果你与其他人分享你的分支,他们有旧承诺的副本。
也从评论中,如果你想要一个更少的“可爱”方法,你可以使用
git clean -i
注意:这得到了很多注意力. 它是超重要,你不这样做,如果你在一个分支,其他人从工作,也(取决于时间框架)不是一个远程,已经与大师合并。
我已经尝试了很多方式来逆转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 删除所有新的文件创建自最后的承诺,因为这是大多数人期望我相信,当转向最新承诺时。
我发现最不复杂的方式,把一个分支转向任何特定的承诺,在那里你不能改变历史,就是:
查看承诺或分支您的愿望转向. 编辑.git/HEAD 并更改转向您转向的分支。
如如:
echo 'ref: refs/heads/example' > .git/HEAD
如果你做 git 状态,你应该看到你所在的分支和你想转向的分支之间的所有变化。
如果一切都看起来很好,你可以承诺. 你也可以使用 git diff revert..example 确保它是相同的。