git:推送一个提交

假设我做了几个提交,并希望挑选哪些我推送到远程存储库。 我怎么能这样做(在ASCII:C1-> C2-> C3-> C4,我想推C2和C4)。 将重新排序,重新设置,推动,然后重新设置工作? (C1-> C2-> C3-> C4 => C2-> C4-> C1-> C3 =>复位C4 =>推动=>复位C3)。 有更好的方法吗?


如果你有私人分支的提交,你可以从私人分支挑选提交并将它们应用到官方分支。 此时,您现在可以推送官方分支上的所有提交(这是您之前挑选樱桃的子集)。


你在找什么:

git push origin commit-id:master

信用转到:http://blog.dennisrobinson.name/push-only-one-commit-with-git/

解释性说明:

  • 推送提交会将所有提交推到它之前(如Amber所述)。 关键是首先对你的提交( git rebase -i )进行重新排序,以便它们按照你想要推送它们的顺序进行。
  • 建议的分支+ cherry-pick方法(由midtiby建议)也适用,但为什么在不需要的时候创建一次性分支。
  • commit-id不一定是sha1。 要在最后N次提交之前推送所有内容,请使用“HEAD〜N”代替commit-id

  • 如果推送到远程存储库中不存在的分支,则使用refs/heads/作为远程分支的前缀,例如:

    git push origin HEAD~1:refs/heads/completely-new-branch
    

    (如果没有,git会用这个无望的错误信息来惩罚你)。


    $ git push <remote name> <commit hash>:<remote branch name>
    
    # Example:
    $ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
    
    链接地址: http://www.djcxy.com/p/8769.html

    上一篇: git: push a single commit

    下一篇: git alias: multiple commands, variadic parameters