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

时间:2015-06-09 12:18:00

标签: git push

此问题显示如何推送到主分支的提交(例如,特定提交的所有父提交):

How can I pushing specific commit to a remote, and not the previous commits?

答案是:

git push <remotename> <commit SHA>:<remotebranchname>

所以你可以使用git push origin <commit SHA>:master

但是,我想自动将该提交推送到匹配的远程分支。

我不能只使用git push <remotename> "<commit SHA>:$(git branch)",因为git branch返回本地分支,我想拥有匹配的远程分支(例如,您可以将本地主branch映射到映射到远程prod分支。我想考虑到这一点。

1 个答案:

答案 0 :(得分:0)

由于Git的工作方式,提交并不明确属于分支。分支只是指向位于全局历史树中某处的提交的指针,因此当您想要将某个提交单独推送到远程分支时,该提交不会说明您可能意味着哪个分支。

您唯一能做的就是使用git branch --contains找到包含提交的分支。如果它只返回一个分支,那么你很幸运,一切都很清楚但是如果多个分支可以访问提交,那么命令可能会返回多个分支。对于其他所有内容,例如跟踪分支,您必须查看存储库的配置。

但是,您的工作流程对我来说似乎有点奇怪。如果您一直希望推送旧的提交而不是当前的分支,那么您应该做的是创建一个新的分支。有一个分支与你可以推动的远程分支相匹配;并且有另一个分支领先于您的开发发生的分支。每当您想要更新遥控器时,您都会更新与遥控器匹配的本地分支,然后只需按下该分支。

所以你的历史会是这样的:

              prod               master
               ↓                   ↓
* -- * -- * -- * -- * -- * -- * -- *

你可以使用prod推送git push origin prod,然后解决实际上落后的远程跟踪分支。

相关问题