git命令 - 在推送时过滤提交

时间:2011-07-14 10:42:38

标签: git github

我已经进行了多次提交但不希望现在推送所有提交。有没有办法只推动我想要的那些提交?

由于

2 个答案:

答案 0 :(得分:5)

您有两种选择,

底垫

说,您想要包含最近五次提交中的三次:

git rebase -i HEAD~5           # reorder the lines in the text editor, 
                               # leave the 'private' commits at the end
git push origin HEAD~2:master  # push all but the last two

樱桃选择

这涉及一个临时分支,还有很多工作

git checkout -b temp HEAD~5
git cherrypick <hash1>
git cherrypick <hash2>
git cherrypick <hash3>
git push origin master

推荐

  • 我建议不要使用cherrypicking,因为它更容易犯错,并且很容易使相同的提交看起来“不同寻常”
  • 使用--cherry-pick--cherry-mark optionsgit log一起查看引用之间的实际差异(git log --cherry-pick --oneline master...origin/master

答案 1 :(得分:1)

此命令可以提供帮助:

$ git push origin <thelonghash>:master

但是,如果您提交A->B->C->D并执行git push origin C:master,则提交A,B,C将被推送到原点。因此,如果您只需要推送C,则需要使用git rebase -i 重新排列提交,以便C最早。