Git重置(Reset)与撤销:区别与适用场景
Git中“重置(Reset)”与“撤销(Undo)”原理和影响不同:Reset直接改写历史,适用于本地未push的“草稿”场景;Undo通过新提交或恢复操作保留历史,适用于需保留痕迹(如远程分支)的错误纠正。 Reset分三种模式:`--soft`仅移动HEAD,暂存区/工作区不变,适合修改提交信息;`--mixed`移动HEAD并重置暂存区,适合撤销误`add`的文件;`--hard`彻底重置工作区,适合丢弃本地错误修改。 Undo核心是不改写历史:`git revert`创建反向提交,保留远程历史;`git checkout`恢复文件或分支;`git commit --amend`修改最近提交;`git stash`暂存未提交修改。 关键区别:Reset改历史(本地未push),Undo留痕迹(远程或需历史)。避坑:远程错误用Revert,本地未push用Reset,慎用`--force`。
阅读全文