git:推送一个提交

Itt*_*ayD 43 git

说我做了几次提交,并希望能够选择我推送到远程存储库的那些提交.我怎么能这样做(在ascii:C1-> C2-> C3-> C4,我想推C2和C4).是否会重新订购rebase,重置,推送然后重置工作?(C1-> C2-> C3-> C4 => C2-> C4-> C1-> C3 =>复位C4 => push =>复位C3).有更好的方法吗?

use*_*284 70

你在找什么:

git push origin commit-id:master
Run Code Online (Sandbox Code Playgroud)

学分归于:http://blog.dennisrobinson.name/push-only-one-commit-with-git/

解释性说明:

  • 推送提交会推送所有提交(如Amber所说).关键是首先重新排序你的提交(git rebase -i),所以它们按你想要的顺序排列.
  • 建议的分支+樱桃挑选方法(由midtiby建议)也有效,但为什么在你不需要的时候创建一次性分支.
  • commit-id不一定是sha1.要在最后一次N提交之前推送所有内容,请使用"HEAD~N"代替commit-id.

如果要推送到远程存储库中不存在的分支,请在远程分支前添加前缀refs/heads/,例如:

git push origin HEAD~1:refs/heads/completely-new-branch
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该是公认的答案.+1谢谢. (10认同)

mid*_*iby 22

如果您在私人分支机构上提交了您的提交,您可以从私有分支机构挑选提交并将其应用于官方分支机构.此时,您现在可以在官方分支上推送所有提交(这是您之前选择的子集).

  • 或者,如果您提交的是官方分支机构,您可以选择进入临时分支并将其推送到远程官方分支机构.嗯...对不对? (3认同)

Nik*_*are 8

$ git push <remote name> <commit hash>:<remote branch name>

# Example:
$ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
Run Code Online (Sandbox Code Playgroud)

  • 请在你的回答中添加一些评论,这样可以轻松解决问题...... (2认同)
  • 不适合我,它推动了两个提交,(我只想推动最后一个) (2认同)