如何将特定提交推送到远程,而不是之前的提交?

这篇博客讨论了如何在Git中将特定提交推送到远程仓库,而非所有历史提交。建议的方法包括使用cherry-pick创建新分支,重新排序提交,或者使用git reset和git push。此外,还提供了相关命令行操作的指导。
摘要由CSDN通过智能技术生成

我已经对不同的文件做了几次提交,但到目前为止,我想将我的远程存储库推送到特定的提交。

那可能吗?


#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

将单个提交推送到我的远程主分支。

参考文献:

  1. http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  2. http://blog.dennisrobinson.name/reorder-commits-with-git/

也可以看看:

  1. git:在本地Rebase之后重复提交Pull
  2. 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将确保您所有其他提交现在都是您推送的提交的子项,因此未来的推送也可以正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值