如何放弃本地更改并强制同步远程仓库

在日常开发过程中,我们可能会遇到以下情况:
  • 本地代码混乱
  • 发生了 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
这是最直接、最可靠的方法。

发表评论