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

标签 git

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

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

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

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

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

最佳答案

Once I do that, everything on the master branch from commit jfe2ldj2 an later will be wiped from git and can never be recovered.

如前所述well covered ,如果更改已提交,即使在 reset --hard

之后,它们仍然可以恢复

Also, this will not effect any other branches or commits correct?

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

关于git reset --hard,它将如何影响我的提交和分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15874829/

相关文章:

git - 选择提交以发送 pull 请求

xml - 如何修复损坏的 csproj 文件?

git - 是否可以在不修改/压缩提交的情况下将补丁集添加到 Gerrit 审查中

git - 适用于 Linux 的 Windows 子系统 git mergetool 融合了 UnicodeDecodeError

git - git 命令的快捷方式

linux - 从 txt 向 Git bash 添加函数

.net - 如何在git中控制同一个项目的多个框架版本

git - Bash 函数用于查找文件(其名称与正则表达式匹配)已*更改*的所有 Git 提交

Git diff -S 只显示匹配的行

git - 如何强制 Composer 检查 `master` 分支?