git 同时添加了origin和upstream仓库的时候,如果设置默认pull和push的地址

明白了,你现在有两个远程仓库:

  • origin → 你的 fork(你想操作的目标)
  • upstream → 原始仓库(不要动的)

你现在的操作都误操作到 upstream 上去了,这种情况我们需要切换回 origin 并只推送/回滚到 origin

我给你整理一个完整操作方案👇


🧠 一、先确认当前分支和远程

git branch -vv

输出类似:

* main  a1b2c3d [upstream/main] merge ...

这里如果看到 [upstream/main] 就说明本地 main 默认追踪 upstream → 之后 push / pull 都是 upstream。


🚀 二、切换本地分支追踪 origin

假设你在 main 分支:

git branch -u origin/main main

或者:

git branch --set-upstream-to=origin/main main

然后验证:

git status
git branch -vv

应该显示:

* main  a1b2c3d [origin/main] ...

✅ 这样 push / pull 默认都对应 origin 了。


🧠 三、强制回退到某个版本并只影响 origin

假设你要回退到 commit a1b2c3d

# 回退本地
git reset --hard a1b2c3d

# 强制推送到 origin
git push -f origin main

注意 ⚠️

  • 这不会影响 upstream
  • 只是覆盖你的 fork(origin)
  • 如果其他人也在操作 origin,可能需要提前沟通

🧠 四、避免再次操作 upstream

  1. 不要在 upstream 上 push
  2. 如果你不想动 upstream,可以把它改成只 fetch:
git remote set-url --push upstream no_push

这样 push upstream 就会报错,防止误操作。


🧠 五、建议操作流程

  1. 确认本地分支追踪 origin
  2. 使用 git reset --hard <commit> 回退本地
  3. 使用 git push -f origin main 强制更新 origin
  4. upstream 仅做 fetch,同步原仓库更新

posted @ 2026-03-24 17:27  学不会xuebuhui  阅读(5)  评论(0)    收藏  举报
Language: javascript //图片预览