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

我已经对不同的文件进行了多次提交,但到目前为止,我只想推送到我的远程存储库,只进行一次特定的提交。

那可能吗?


为了推动一个给定的提交,你可以写:

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

提供的<remotebranchname>已经存在于远程。 (如果没有,你可以使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>来自动创建它。)

如果你想在不推动提交的情况下推送提交,你应该首先使用git rebase -i来重新排序提交。

编辑

以更完整的描述检查@塞缪尔的答案:https://stackoverflow.com/a/27907287/889213

参考文献:

  • http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  • http://blog.dennisrobinson.name/reorder-commits-with-git/

  • 试过建议的解决方案:

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

    喜欢这个:

    git push origin 712acff81033eddc90bb2b45e1e4cd031fefc50f:master

    在我的情况下,主人提交了5个提交,并且我只是想推送最后一次提交,但是上述最终将所有更改推送到了包括指定的提交。 在我看来,樱桃挑选方法可能是这种用例的更好方法。


    其他答案缺乏重新排序的描述。

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

    将会推送一个单独的提交,但该提交必须是本地非推送提交的最旧版本,不要与顶层,第一个或提示提交混淆,这在我看来都是含糊不清的描述。 提交需要最早的提交,即离最近的提交最远。 如果它不是最老的提交,那么从最旧的本地非推送SHA到指定的SHA的所有提交都将被推送。 要重新排列提交,请使用:

    git rebase -i HEAD~xxx
    

    重新排序提交后,您可以安全地将其推送到远程存储库。

    总结一下,我用了

    git rebase -i HEAD~<number of commits to SHA>
    git push origin <post-rebase SHA>:master
    

    将单个提交推送到我的远程主分支。

    参考文献:

  • http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  • http://blog.dennisrobinson.name/reorder-commits-with-git/
  • 也可以看看:

  • git:在本地再次访问之后重复提交
  • git:推进单一提交,重新排序,重复提交
  • 链接地址: http://www.djcxy.com/p/1387.html

    上一篇: How can I push a specific commit to a remote, and not previous commits?

    下一篇: Undo a particular commit in Git that's been pushed to remote repos