我知道这已经在其他地方得到了详细的回答,但我只需要一个简单的答案......我无法理解其他地方的长时间讨论。
这是这种情况:
- 开发机器 - 将变更集 X 推向头部。
- 生产机器 - 拉动变更集 X。生产机器中断。
- 开发人员恐慌,想要在生产机器上恢复到变更集 X-1,而不删除变更集 X。
在生产机器上执行此操作的简单方法是什么?
谢谢。
更新:我应该一直在搜索“回滚”变更集,而不是“恢复”!如果您处于相同的情况,您也应该这样做 - 即您想在本地返回特定提交,而不更改 git 历史记录。
我知道这已经在其他地方得到了详细的回答,但我只需要一个简单的答案......我无法理解其他地方的长时间讨论。
这是这种情况:
在生产机器上执行此操作的简单方法是什么?
谢谢。
更新:我应该一直在搜索“回滚”变更集,而不是“恢复”!如果您处于相同的情况,您也应该这样做 - 即您想在本地返回特定提交,而不更改 git 历史记录。
好吧,您可以使用标签来保留 ref commit X
:
git tag commit_X -m 'this is the commit that causes problem'
git reset --hard HEAD^
git push --tags
git push -f
稍后,如果您想签commit X
出并查看那里发生了什么,只需使用该commit_X
标签来恢复变更集。
OK, this seemed to work:
git log | more
Then find the entry you want to go back to, e.g.:
commit 4facf8fc299a545557b4a47a61ed876efe55eab6
Date: Thu May 30 19:17:32 2013 +0100
Fix syntax error
Then type:
git checkout 4facf8fc299a545557b4a47a61ed876efe55eab6