我如何从我目前的状态转向在某个承诺上拍摄的截图?
如果我做 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?
但是,这里被问及如何取消具体的承诺,在这种情况下,它是取消过去的三个承诺,回到11月3日的承诺。
你可以用下调来做到这一点:
git rebase -i HEAD~4
这将列出你的最后四个承诺。
现在你有取消命令的选项,你用 drop 文本这样做。
只需在键盘上点击我,并在承诺旁边,您要删除写下滴,而不是默认选择在键盘上,点击输出和 :wq
要确保承诺被删除,写下:
git log
你會看到,當滴滴被移除時,你得救的行為。
要将这些变化推到您的远程分支,请写下:
git push --force
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 的能力正如你想要的那样创作承诺,这意味着有时你需要在 git 添加中进行的更改中取消更改。
Git 不知道这些变化,因为它们从未被承诺,一旦你运行这个命令,就没有办法恢复这些变化。
最后,您可以使用 --mixed 重新设置工作树,而无需排序任何变更。
回归承诺
你可以使用 -no-commit,或者你可以使用 -n 告诉 Git 进行逆转,但停止承诺改变。
否则,您可能会通过尝试转换尚未存在的代码来混淆 Git。