如何解决fork仓库的开发分支push到了fork仓库的master分支上?

问题背景

我fork了仓库,新建了fix_patch_xxx分支来解决问题 然后pull request提交到apache/eventmesh(一般fork的仓库的master分支是不直接开发的 用来保持和源仓库的代码一致)

此时 马大哈本地commit完了之后没有设置这个分支的upstream,导致使用git GUI的时候直接推送到了master分支上。(1 commit behind是因为其他分支已经将pr合到主仓库中了)

尝试解决

  1. git revert git revert用于远程回退 git reset用于本地回退

两者的一个重要区别是前者会留一次commit,后者不会留:

凸(艹皿艹 ) 变成两个commit了,并且可以看到commit信息是revert上次commit

  1. 用git自带的discard

点了半天没啥反应 或者是有冲突?

  1. 尝试解决第二种方案的冲突问题

悲 把上面的revert的又merge回来了

(纯属本人不熟悉操作,如有会的小伙伴希望能评论区指点 感谢)

高人指点

简而言之:将你自己fork的仓库作为远程,原来的主仓库作为源,强制push。

(出错的原因是仓库master分支有protect rule,在仓库的settings中可以关闭)

这样就可以解决了!

后续思考

既然有这样的upstream和origin了,为啥不直接强制用upstream更新origin!?

在Git中,你可以使用以下命令强制将 upstream 分支的代码更新到 origin 分支:

sql 复制代码
git fetch upstream
git checkout your_branch_name
git merge -Xtheirs upstream/remote_branch_name
git push origin your_branch_name

上述命令的步骤是:

  1. git fetch upstream:从 upstream 远程仓库获取最新的代码。
  2. git checkout your_branch_name:切换到你的本地分支。
  3. git merge -Xtheirs upstream/remote_branch_name:合并 upstream 分支到你的本地分支。这里使用了 -Xtheirs 选项,表示在合并冲突时优先选择 upstream 分支的更改。
  4. git push origin your_branch_name:将更新后的本地分支推送到 origin 远程仓库。
相关推荐
AAI机器之心3 分钟前
LLM大模型:开源RAG框架汇总
人工智能·chatgpt·开源·大模型·llm·大语言模型·rag
杨荧27 分钟前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
int WINGsssss3 小时前
Git使用
git
用户0760530354385 小时前
Git Revert:安全移除错误提交的方式
git
FIT2CLOUD飞致云6 小时前
测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布
开源·接口测试·metersphere·团队协作·持续测试·测试管理
杨荧8 小时前
【JAVA开源】基于Vue和SpringBoot的旅游管理系统
java·vue.js·spring boot·spring cloud·开源·旅游
西柚与蓝莓11 小时前
任务【浦语提示词工程实践】
github
Good_Starry17 小时前
Git介绍--github/gitee/gitlab使用
git·gitee·gitlab·github
云端奇趣1 天前
探索 3 个有趣的 GitHub 学习资源库
经验分享·git·学习·github
杨荧1 天前
【JAVA开源】基于Vue和SpringBoot的水果购物网站
java·开发语言·vue.js·spring boot·spring cloud·开源