我如何将特定提交推送到远程,而不是以前的提交?
我已经对不同的文件进行了多次提交,但到目前为止,我只想推送到我的远程存储库,只进行一次特定的提交。
那可能吗?
为了推动一个给定的提交,你可以写:
git push <remotename> <commit SHA>:<remotebranchname>
提供的<remotebranchname>
已经存在于远程。 (如果没有,你可以使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
来自动创建它。)
如果你想在不推动提交的情况下推送提交,你应该首先使用git rebase -i
来重新排序提交。
编辑
以更完整的描述检查@塞缪尔的答案:https://stackoverflow.com/a/27907287/889213
参考文献:
试过建议的解决方案:
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
将单个提交推送到我的远程主分支。
参考文献:
也可以看看:
上一篇: 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