Git 强制拉取更新

有时,当本地代码改得乱七八糟,需要丢弃所有改动跟远端保持一致,那么按照下面的内容操作。

一定要注意:该操作会永久删除本地未提交的修改,操作前请备份!


快速开始

精简版

git fetch --all && git reset --hard origin/master && git pull

分步执行

# 1. 获取远端信息
git fetch --all

# 2. 重置本地到远端状态
git reset --hard origin/master

# 3. 拉取最新(可选,确保完全同步)
git pull origin master

命令说明

git fetch --all

从所有远端仓库下载最新信息,但不修改本地代码。执行后 origin/master 指向远端最新位置。

git reset --hard origin/master

将本地代码完全重置为远端状态。所有未提交的修改都会丢失。

reset 的三种模式

模式 效果
--soft 只移动 HEAD,不修改暂存区和工作目录
--mixed 移动 HEAD + 重置暂存区
--hard 全部重置(高危)

git pull origin master

从远端拉取最新代码并合并。在 reset 之后通常是多余的,但可以确保完全同步。


注意事项

  1. 备份修改:操作前用 git stash 保存重要修改
  2. 确认分支:有些项目用 main 而不是 master
  3. 多仓库:有多个 remote 时指定具体名称
  4. 恢复误操作:已提交的可用 git reflog 恢复,未提交的文件无法恢复

常用命令

# 查看远端分支
git branch -r

# 查看当前状态
git status

# 备份修改
git stash push -m "backup"

# 查看操作历史
git reflog

# 恢复误操作
git reset --hard HEAD@{1}

实际场景

  • 不要频繁强制推送(git push --force),会打乱其他开发者的提交历史
  • 如需强制推送,提前通知开发者团队

参考链接

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐