这是否可能?
要将一个给定的提交 推送 上去,你可以这样写:
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。 - dminergit push <remotename> <commit SHA>:refs/heads/<new remote branch name>
命令创建新的远程分支。创建后,按照答案描述进行推送即可。 - Wes Oldenbeuvinggit push origin HEAD~1:master
。 - artless noise-f
标志。 - Ian Vaughangit push <remotename> <commit SHA>:<remotebranchname>
git rebase -i HEAD~xxx
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
git log <upstream>..HEAD
显示的相同的提交记录集合”。我原以为这意味着无论你对这些提交记录做了什么,你都不能回到比 upstream HEAD 更早的版本,但我想这可能比我想象的更微妙。 - Ed Avis在推送特定提交时,挑选操作相比其他方法效果最佳。
具体操作如下:
创建一个新的分支 -
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
,以查看一切是否按照您想要的方式显示。
git rebase -i
将是理想的解决方法。当您想要复制提交时,才需要使用Cherry pick。 - Vinay Bhargav我建议使用git rebase -i
; 将要推送的提交移动到你已经做出的提交的顶部。 然后使用git log
获取重新基础化提交的SHA,检查它,并推送它。 重新基础化将确保所有其他提交现在都是你推送的提交的子级,因此未来的推送也将正常工作。
git log
步骤的部分吗? - Drux我认为你需要使用 "git revert" 回到那个提交版本,然后将其推送。或者你可以通过 cherry-pick
将一个提交应用到新分支中,并将其推送到远程仓库上的分支。大概是这样:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
你想要的提交。 - Josh K最简单的方法是使用两个命令来实现。
首先,将本地目录设置为所需状态。然后,
git push origin +HEAD^:someBranch
只从远程分支中删除上一个提交(commit),而不影响本地分支 someBranch
,可以连续数次执行此操作,或更改 +HEAD^
来反映您想要批量从远程删除的提交数量。现在您已经恢复了原状,可以像往常一样使用
git push origin someBranch
来更新远程分支。
你也可以在另一个目录中:
我刚刚使用了
git cherry-pick '提交的sha id'
然后执行
git push
在我的情况下,本地分支名为'master',远程默认分支名也是'master'。