这个问题显示了如何将提交推到主分支(例如特定提交的所有父提交):
如何将特定的提交推送到远程,而不是之前的提交?
答案是:
git push <remotename> <commit SHA>:<remotebranchname>
所以你可以使用git push origin <commit SHA>:master
但是,我希望自动将提交推送到匹配的远程分支。
我不能只使用git push <remotename> "<commit SHA>:$(git branch)"
,因为git分支返回本地分支,我想有匹配的远程分支(例如,你可以映射本地主branch
映射到远程prod
分支)。
由于Git的工作方式,提交并不清楚地属于一个分支。分支只是指向全局历史树中某个地方的提交的指针,所以当你想将某个提交单独推送到远程分支时,该提交并没有说明你可能指的是哪个分支。
你唯一能做的就是找到包含提交的分支,使用git branch --contains
。对于其他的一切,比如跟踪分支,您必须查看存储库的配置。
然而,你的工作流程对我来说有点奇怪。有一个与遥控器相匹配的分支,你可以直接按;在你开发的分支之前还有一个分支。当你想要更新远程时,你只需更新与远程匹配的本地分支,然后只需推送该分支。
所以你的历史记录看起来像这样:
prod master
↓ ↓
* -- * -- * -- * -- * -- * -- * -- *
你可以使用git push origin prod
来推动prod
,并使其解析任何远程跟踪分支实际上在后面。