Geo*_*edy 1023
为了推动通过了一个指定的提交,你可以这样写:
git push <remotename> <commit SHA>:<remotebranchname>
Run Code Online (Sandbox Code Playgroud)
提供<remotebranchname>已存在于遥控器上.(如果没有,您可以使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>它来自动创建它.)
如果要在不推送先前提交的情况下推送提交,则应首先使用git rebase -i重新排序提交.
Sam*_*uel 71
其他答案缺少重新排序的描述.
git push <remotename> <commit SHA>:<remotebranchname>
Run Code Online (Sandbox Code Playgroud)
将推送单个提交,但该提交必须是您的本地,非推送,提交的OLDEST,不要与top,first或tip提交混淆,在我看来这些都是模棱两可的描述.提交需要最早的提交,即距离您最近的提交最远的提交.如果它不是最早的提交,则将推送从最旧的,本地的,未推送的SHA到指定的SHA的所有提交.要重新排序提交使用:
git rebase -i HEAD~xxx
Run Code Online (Sandbox Code Playgroud)
重新排序提交后,您可以安全地将其推送到远程存储库.
总结一下,我用过
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
Run Code Online (Sandbox Code Playgroud)
将单个提交推送到我的远程主分支.
参考文献:
也可以看看:
Wal*_*ndt 25
我建议使用git rebase -i; 将您想要提交的提交移动到您所做的提交的顶部.然后使用git log获取重新提交的提交的SHA,检查它并推送它.rebase将确保您所有其他提交现在都是您推送的提交的子项,因此未来的推送也可以正常工作.
小智 21
在推送特定提交时,Cherry-pick与所有其他方法相比效果最佳.
这样做的方法是:
创建一个新的分支 -
git branch <new-branch>
Run Code Online (Sandbox Code Playgroud)
使用您的原始分支更新您的新分支 -
git fetch
git rebase
Run Code Online (Sandbox Code Playgroud)
这些操作将确保您完全拥有与原点相同的东西.
樱桃挑选sha id你想做的 -
git cherry-pick <sha id of the commit>
Run Code Online (Sandbox Code Playgroud)
你可以sha id通过跑步来获得
git log
Run Code Online (Sandbox Code Playgroud)
把它推到你的原点 -
git push
Run Code Online (Sandbox Code Playgroud)
运行gitk以查看所有内容都与您想要的一样.
Jos*_*h K 12
我相信你必须"git revert"回到那个提交然后推送它.或者您可以cherry-pick提交到新分支,并将其推送到远程存储库上的分支.就像是:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
Run Code Online (Sandbox Code Playgroud)
完成此操作的最简单方法是使用两个命令。
首先,将本地目录设置为您想要的状态。然后,
git push origin +HEAD^:someBranch
someBranch仅从远程删除最后一次提交,而不是本地。您可以连续执行几次此操作,或者进行更改+HEAD^以反映要从远程批量删除的提交数量。现在你重新站起来,并使用
git push origin someBranch
正常更新遥控器。
| 归档时间: |
|
| 查看次数: |
429213 次 |
| 最近记录: |