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
- 不要在 upstream 上 push
- 如果你不想动 upstream,可以把它改成只 fetch:
git remote set-url --push upstream no_push
这样 push upstream 就会报错,防止误操作。
🧠 五、建议操作流程
- 确认本地分支追踪 origin
- 使用
git reset --hard <commit>回退本地 - 使用
git push -f origin main强制更新 origin - upstream 仅做 fetch,同步原仓库更新

浙公网安备 33010602011771号