如何撤销Git中领先origin/master的所有未推送提交并保留文件修改
解答
可以直接执行git reset操作,无需定位那7次提交的具体信息,操作如下:
执行命令
直接运行:
git reset --mixed origin/master
--mixed是git reset的默认参数,也可以省略不写,直接执行git reset origin/master效果完全一致。
效果说明
该命令完全匹配你的需求,执行后会达成以下效果:
- 本地HEAD指针将回退到和远端
origin/master一致的状态,自动抹掉领先的7次本地提交记录 - 所有7次提交对应的文件修改会全部保留在本地工作区,不会丢失任何改动内容
- 自动清空暂存区,撤销所有历史
git add操作(包含这7次提交中新增文件的add操作,新增文件会变为未跟踪/未暂存状态)
可选安全操作
如果担心操作失误,可以提前给当前状态打临时标签备份:
- 执行
git tag temp_backup给当前提交链打标签 - 执行reset操作后如果不符合预期,运行
git reset temp_backup即可恢复到操作前的状态 - 确认操作无误后,可运行
git tag -d temp_backup删除临时备份标签
内容的提问来源于stack exchange,提问作者ru111
相关产品推荐
相关产品推荐

