git回撤多种方式解读
git rollback 不是一个 Git 的原生命令,但它通常指的是在 Git 中将仓库状态恢复到之前的某个状态。这个操作可以通过多种方法实现,具体取决于你想要恢复的内容和程度。以下是一些常见的恢复操作:
常见的恢复操作
-
撤销最后一次提交:如果你想撤销最后一次提交,同时保留工作目录的更改,可以使用
git reset。git reset --soft HEAD~1--soft:只移动 HEAD 指针,不更改索引和工作目录。HEAD~1:表示上一个提交。
-
完全撤销最后一次提交:如果你想撤销最后一次提交,并删除所有更改,可以使用
git reset --hard。git reset --hard HEAD~1--hard:重置索引和工作目录,使其匹配到上一个提交。
-
恢复到特定提交:如果你想将分支恢复到某个特定的提交,可以使用提交哈希。
git reset --hard <commit-hash> -
撤销已经推送的提交:如果你已经推送了提交,并且需要撤销,可以使用
revert。git revert <commit-hash>git revert会创建一个新的提交来撤销指定的提交,这样不会破坏提交历史。
-
放弃工作目录的更改:如果你想放弃工作目录中的未提交更改,可以使用
git checkout或git restore。git checkout -- <file>或者(Git 2.23+):
git restore <file>
实例
假设你有以下提交历史:
A---B---C---D main
你想回滚到提交 B。
1. 撤销最后一次提交(保留更改)
git reset --soft HEAD~1
现在你的提交历史是:
A---B---C main (changes from D are staged)
2. 完全撤销最后一次提交
git reset --hard HEAD~1
现在你的提交历史是:
A---B---C main
工作目录和索引也会恢复到提交 C 的状态。
3. 恢复到特定提交(如 B)
git reset --hard <B-commit-hash>
现在你的提交历史是:
A---B main
4. 撤销已经推送的提交
如果你推送了 C 和 D,但需要撤销 D:
git revert <D-commit-hash>
现在你的提交历史是:
A---B---C---E main
E 是一个新的提交,撤销了 D 的更改。
注意事项
- 慎用
--hard:使用git reset --hard会丢失工作目录中的未提交更改,请确保这些更改不再需要或已经备份。 - 合作项目中小心使用
reset:在共享分支(如main或master)上使用reset可能会导致其他开发者的历史记录与远程仓库不同步,建议在这种情况下使用revert。 - 了解各命令的影响:确保理解每个命令的作用及其对提交历史、索引和工作目录的影响,以避免意外的数据丢失。
通过这些方法,你可以在 Git 中实现“回滚”操作,恢复到之前的某个状态。
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/18306055,如有侵权联系删除

浙公网安备 33010602011771号