在追踪当前分支的远程分支上推送特定提交
这个问题展示了如何推动对主分支的提交(例如,特定提交的所有父提交):
我如何推送特定的提交到远程,而不是以前的提交?
答案是 :
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
来找到包含commit的git branch --contains
。 如果只返回一个分支,那么你很幸运,一切都很清楚,但如果提交可以被多个分支访问,那么该命令可能会返回多个分支。 对于其他所有内容,例如跟踪分支,您必须查看存储库的配置。
但是,您的工作流程对我来说似乎有点奇怪。 如果你一直想推送一个较旧的提交而不是你当前的分支,那么你应该做的是做一个新的分支。 有一个分支与远程分支相匹配,然后您可以推送; 并且有一个分支在你的开发发生的分支之前。 而且,无论何时您想更新远程设备,您都会更新与远程设备匹配的本地分支,然后只需推送该分支。
所以你的历史看起来像这样:
prod master
↓ ↓
* -- * -- * -- * -- * -- * -- * -- *
你可以使用git push origin prod
prod
来git push origin prod
,并且解决任何远程追踪分支实际上在后面的问题。
上一篇: Push specific commit on the remote branch tracking the current branch