git reset --hard,它会如何影响我的提交和分支?

时间:2013-04-08 08:45:13

标签: git

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

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

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

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

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

1 个答案:

答案 0 :(得分:6)

  

一旦我这样做,主分支上的所有内容都会在稍后提交jfe2ldj2   将从git擦除,永远无法恢复。

正如well covered一样,如果提交了更改,即使在reset --hard

之后仍可以恢复
  

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

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