Git操作疑问:能否从本地master推送至fork后再推送到upstream master?
你的操作可行吗?分情况说清楚
咱们先拆解你的问题,从技术和协作规范两个层面来讲:
技术上:能不能推,全看权限
- 如果你对
upstream对应的原仓库有直接推送master分支的权限(比如原仓库是你自己建的,或者你是项目维护者),那这条操作在技术上是能成的——前提是你提前拉取了upstream的master更新,把本地master同步好,解决了所有冲突,保证本地分支是upstream master的快进状态。 - 要是你没权限,那
git push upstream master直接就会报错,Git会拒绝你的推送,这种情况下你还是得走常规的Pull Request流程。
协作规范上:不推荐这么干
就算你有权限,直接往master分支推代码也不符合大部分项目的协作逻辑:
- 跳过了代码评审:直接推送等于绕过了Pull Request的审查环节,很容易把有问题的代码直接合进主分支,不利于项目质量把控。
- 变更追溯困难:没有PR记录,后续排查问题时,很难把代码变更和具体的需求、修复场景对应起来。
- 冲突风险更高:多人同时直接操作master的话,就算你提前拉了更新,也可能在拉取和推送的间隙出现新提交,导致冲突。
关于你的远程命名小提醒
你提到“我的origin也命名为upstream”,这里要多说一句:通常Git的约定是把自己的fork仓库设为origin,原项目仓库设为upstream,这样和其他开发者沟通时不会搞混。如果你的命名反过来了,建议调整一下,避免后续操作出错:
# 先移除当前的upstream(假设它是你的fork) git remote remove upstream # 添加原项目仓库为upstream git remote add upstream <原仓库的URL> # 确认远程配置是否正确 git remote -v
内容的提问来源于stack exchange,提问作者ttmt
相关产品推荐
相关产品推荐

