git强制更新本地分支

你的需求是希望 自动拉取所有远程分支,并且在分支间存在冲突时 自动覆盖本地内容(不保留差异)。以下是优化后的解决方案:


最终解决方案(全自动强制覆盖)

git fetch --all && for branch in $(git branch -r | grep -vE "HEAD|master|main"); do
  local_branch=${branch#origin/}
  # 强制删除已存在的本地分支(如果有)
  git branch -D "$local_branch" 2>/dev/null
  # 强制创建分支并覆盖本地文件
  git checkout -B "$local_branch" "$branch" --no-track --force
done
关键参数说明
参数 作用
-D 强制删除本地分支(无论是否有未提交修改)
-B 强制创建/重置分支(相当于 -b + --force
--force 强制覆盖本地文件(忽略所有冲突)
2>/dev/null 屏蔽错误输出(如分支不存在的警告)

注意事项

  1. 数据风险
    此操作会无条件覆盖本地文件,确保:

    • 不需要保留任何本地修改
    • 已提交的重要更改已推送到远程
  2. 二进制文件问题
    如果遇到文件权限错误(如之前的 ota_*.bin),先执行清理:

    git reset --hard && git clean -fd
    
  3. 跳过特定分支
    如需排除更多分支(如 dev),修改 grep -vE 部分:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值