我已经对不同的文件做了几次提交,但到目前为止,我想将我的远程存储库推送到特定的提交。
那可能吗?
#1楼
在推送特定提交时,Cherry-pick与所有其他方法相比效果最佳。
这样做的方法是:
创建一个新的分支 -
git branch <new-branch>
使用您的原始分支更新您的新分支 -
git fetch
git rebase
这些操作将确保您完全拥有与原点相同的东西。
樱桃挑选你要做的sha id
-
git cherry-pick <sha id of the commit>
您可以通过运行获取sha id
git log
把它推到你的原点 -
git push
运行gitk
,看看一切看起来都像你想要的那样。
#2楼
其他答案缺少重新排序的描述。
git push <remotename> <commit SHA>:<remotebranchname>
将推送单个提交,但该提交必须是本地,非推送,提交的OLDEST,不要与top,first或tip提交混淆,在我看来这些都是模棱两可的描述。 提交需要最早的提交,即距离您最近的提交最远的提交。 如果它不是最早的提交,则将推送从最旧的,本地的,未推送的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/
也可以看看:
#3楼
我相信你必须“git revert”回到那个提交然后再推它。 或者你可以cherry-pick
提交到一个新的分支,并将其推送到远程存储库的分支。 就像是:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
#4楼
要通过指定的提交推高 ,你可以这样写:
git push <remotename> <commit SHA>:<remotebranchname>
提供<remotebranchname>
已存在于遥控器上。 (如果没有,你可以使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
来自动创建它。)
如果要在不推送先前提交的情况下推送提交,则应首先使用git rebase -i
重新提交提交。
#5楼
我建议使用git rebase -i
; 将您想要提交的提交移动到您所做的提交的顶部。 然后使用git log
获取重新提交的SHA的SHA,检查它并推送它。 rebase将确保您所有其他提交现在都是您推送的提交的子项,因此未来的推送也可以正常工作。