我如何从我目前的状态转向在某个承诺上拍摄的截图?
如果我做 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?
Rogue 编码器?
工作自己,只是想要它工作吗? 遵循下面的指示,他们已经为我和许多其他人工作了多年。
阅读下面的评论,考虑其他答案,并与你的团队讨论,在你做一些漏洞之前。
将工作复制转换为最新的承诺
要转向以前的承诺,忽略任何变化:
git reset --hard HEAD
在哪里,头部是您当前分支的最后承诺
将工作副本转换为老年委托
要转向比最近的承诺更古老的承诺:
# Resets index to former commit; replace '56e05fced' with your commit code
git reset 56e05fced
# Moves pointer back to previous HEAD
git reset --soft HEAD@{1}
git commit -m "Revert to 56e05fced"
# Updates working copy to reflect the new commit
git reset --hard
# Push your changes to respective branch
git push -f
信用去一个类似的 Stack Overflow 问题,转向一个承诺由一个 SHA hash 在 Git?.
我相信有些人可能来到这个问题,想知道如何回归他们在主人中所做的承诺的变化 - 也就是说,把一切都扔掉,回到起源 / 主人,在这种情况下,这样做:
git reset --hard origin/master
https://superuser.com/questions/273172/how-to-reset-master-to-origin-master
对于我和其他人来说,最好的选择是Git重新设置选项:
git reset --hard <commitId> && git clean -f
这对我来说是最好的选择!它是简单的,快速和有效的!
** 注意:** 如在评论中提到的,不要这样做,如果你与其他人分享你的分支,他们有旧承诺的副本。
也从评论中,如果你想要一个更少的“可爱”方法,你可以使用
git clean -i
注意:这得到了很多注意力. 它是超重要,你不这样做,如果你在一个分支,其他人从工作,也(取决于时间框架)不是一个远程,已经与大师合并。
假设你正在谈论大师和相应的分支(也就是说,这可能是你所关心的任何工作分支):
# Reset local master branch to November 3rd commit ID
git reset --hard 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
# Reset remote master branch to November 3rd commit ID
git push -f origin 0d1d7fc32e5a947fbd92ee598033d85bfc445a50:master
我在博客文章中找到答案(现在不再存在)
请注意,这就是重定向和强迫变更到远程,所以如果你的团队中的其他人已经吸引了Git,你会为他们造成问题。
使用逆转(见其他答案)更好,而不是重新设置. 如果你是一个单人团队,那么这可能并不重要。