在日常开发过程中,我们可能会遇到以下情况:
- 本地代码混乱
- 发生了 merge 冲突
- 不想保留本地更改
- 希望直接以服务器上的代码为准
本篇文章将详细讲解如何彻底放弃本地修改,并让本地仓库与远程仓库保持完全一致。
一、一步到位方案
在项目目录中执行以下三条命令:
git fetch origin
git reset --hard origin/main
git clean -fd
二、命令详解
1️⃣ git fetch origin
从远程仓库拉取最新提交记录,但不会进行合并。
git fetch origin
作用:更新本地的远程分支引用。
2️⃣ git reset –hard origin/main
强制将当前分支指向远程 main 分支。
git reset --hard origin/main
这一步会:
- 删除所有未提交修改
- 取消正在进行的 merge 状态
- 删除本地多余提交
3️⃣ git clean -fd
删除未被 Git 管理的文件和目录。
git clean -fd
-f:强制执行-d:删除未跟踪目录
三、最终效果
执行完成后:
- 本地仓库 = 远程仓库
- 代码状态完全一致
- 就像刚刚 clone 下来一样干净
四、重要警告
⚠ 以下内容会被永久删除:
- 未提交的代码
- 本地新增文件
- 未完成的合并状态
如果有可能需要保留内容,请先执行:
git stash
五、终极重置方式(最干净)
如果想彻底重来,可以直接删除本地仓库并重新克隆:
cd ..
rm -rf 项目目录
git clone 远程仓库地址
六、建议优化配置
建议设置 pull 默认使用 rebase:
git config --global pull.rebase true
以后执行:
git pull
将自动采用 rebase 方式,减少 merge 冲突的发生。
总结
当你不想保留本地修改,只想和远程仓库保持一致时,使用:
git fetch origin
git reset --hard origin/main
git clean -fd
这是最直接、最可靠的方法。