在跟踪当前分支的远程分支上推送特定的提交



这个问题显示了如何将提交推到主分支(例如特定提交的所有父提交):

如何将特定的提交推送到远程,而不是之前的提交?

答案是:

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,并使其解析任何远程跟踪分支实际上在后面。

最新更新