我对不同的文件进行了几次提交,但到目前为止,我只想将特定的提交推送到远程存储库中。
那可能吗?
我对不同的文件进行了几次提交,但到目前为止,我只想将特定的提交推送到远程存储库中。
那可能吗?
Answers:
为了推动通过了一个指定的提交,你可以这样写:
git push <remotename> <commit SHA>:<remotebranchname>
提供的内容<remotebranchname>
已存在于遥控器上。(如果没有,您可以使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
它来自动创建。)
如果要在不推动先前提交的情况下推送提交,则应首先使用git rebase -i
来重新排序提交。
git push <remotename> <commit SHA>:<remotebranchname>
作品。诀窍是将其与git rebase -i
移动所需的提交一起作为第一个提交,并指定commit-sha
git push <remotename> <commit SHA>:refs/heads/<new remote branch name>
。之后,按答案描述进行推送。
git push origin HEAD~1:master
。
-f
标志。
重新排序说明中缺少其他答案。
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
将单个提交推送到我的远程主分支。
参考文献:
也可以看看:
我建议使用git rebase -i
; 将您要推送的提交移动到所做的提交的顶部。然后使用git log
获取重新提交的提交的SHA,将其检出并推送。重新设置将确保您所有其他提交现在都是您推送的子提交,因此将来的推送也可以正常工作。
git log
一步?
在推送特定提交时,Cherry-pick与所有其他方法相比效果最好。
这样做的方法是:
创建一个新分支-
git branch <new-branch>
使用origin分支更新新分支-
git fetch
git rebase
这些操作将确保您拥有与原籍完全相同的资料。
樱桃选择sha id
您要执行的操作-
git cherry-pick <sha id of the commit>
您可以sha id
通过运行获得
git log
将其推到您的原点-
git push
运行gitk
以查看一切看起来都与您想要的方式相同。
git rebase -i
如上述解决方案所建议,使用将是理想的解决方案。仅当您要复制提交时才必须使用Cherry Pick。
我相信您将必须“ git revert”回到该提交,然后再推送它。或者,您可以cherry-pick
提交到新分支,然后将其推送到远程存储库上的分支。就像是:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
所需的提交。
您还可以在另一个目录中: