6

今晚我们遇到了一个混乱,代码签入到 git(如果推送到主分支,它会自动推送到我们的应用程序),导致我们的网站出现了一些故障。我恢复了 EC2 快照以恢复站点,但现在我需要清理 git 并让我们回到正轨。

看起来我需要找到最后一次成功提交到 master 分支,获取它的 sha1 id 的前 8 个左右的字符,然后运行:

git reset --hard jfe2ldj2
git push origin master -f

一旦我这样做了,从提交“jfe2ldj2”到稍后的主分支上的所有内容都将从 git 中擦除,并且永远无法恢复。我理解正确吗?

此外,这不会影响任何其他分支或提交是否正确?意思是,一旦我运行该命令并将主分支恢复到 6 周前,所有其他分支都将保持最新状态。这意味着如果我有许多发布和功能分支,并且自 6 周前以来它们都有多个提交,那么所有这些分支和提交仍然存在吗?

4

1 回答 1

7

一旦我这样做了,主分支上从提交jfe2ldj2到后来的所有内容都将从 git 中删除,并且永远无法恢复。

正如已经很好地介绍的那样,如果提交了更改,即使在reset --hard

此外,这不会影响任何其他分支或提交是否正确?

是的,想想一棵树,砍掉一根树枝会使其他树枝完好无损。

于 2013-04-08T08:53:25.117 回答