跳过正文
  1. 笔记/

Git 强制同步覆盖本地文件

·635 字·2 分钟
Evan Wu
作者
Evan Wu
记录 AI、技术实践、效率工具、项目经验与学习思考。

由于工作生活中使用两台电脑(一台家用PC + 一台随时写作的Macbook)并且本博客的大部分工作都是在PC上面完成的。

今天在Macbook上写博客写完文章发现机器上的文件夹一塌糊涂。担心产生冲突遂打算放弃Macbook上所有本地文件(包括未提交和已提交的),完全同步为远程状态(当前托管在Github),以下是本次用到的 Git 命令:

# 1. 下载远程仓库的最新修改和分支信息(但不自动合并)
git fetch --all

# 2. 把当前分支强制重置到对应远程分支
# 注意:将 main 替换为你当前使用的分支名(如 master or dev)
git reset --hard origin/main

# 3. (可选)清理本地没有被 Git 追踪的零碎文件或者文件夹
git clean -fd

git rest -- hard 操作不可逆。执行后本地所有未提交代码,以及本地的 commit 都会彻底消失,记得注意备份


上面是强行使用整个远程仓库覆盖整个本地仓库的方法,下面是一些精细化拓展操作方式:

  • 只想要远程的某个“特定文件”

如果整体代码没问题,只是把某一个或几个重要文件改乱了,想单独恢复这几个文件,没必要重置整个分支:

git checkout origin/<分支名> -- <文件路径/文件名>
  • 强推(Push)反向同步——用本地强制覆盖远程

有时候情况相反,本地的代码才是对的,远程由于历史冲突提交不上去。想让远程听你的,可以使用强制推送:

git push origin <分支名> --force
# 或者更安全的做法(如果远程在你上次拉取后有新提交,会拒绝执行,避免误杀队友代码)
git push origin <分支名> --force-with-lease

多人协作时,执行 git push –force 前,务必通知其他合作者,否则队友下次 git pull 可能会遭遇代码人生滑铁卢。