【发布时间】:2018-06-03 23:26:18
【问题描述】:
我已经拉出了 master 分支。在本地大师中,我做了几次提交。现在我只想推送最后一次提交(而不是之前的提交)。我如何做到这一点?
我找到了一个很好的解释:How to push only one commit with Git。所以,命令应该是这样的:
git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
或者,以更“抽象”的形式:
git push <remote name> <commit hash>:<remote branch name>
但是,据我了解,在一般情况下,它不会推送单个提交(由其哈希给出)。相反,它将推送指定的提交以及在指定提交之前完成的所有提交。
因此,为了实现目标(仅推送一个提交),我们首先需要对提交进行重新排序,以便我们想要推送的提交被视为最旧的提交(提交序列中的第一个)。如何做到这一点在这里描述:How to reorder commits with Git。这个描述很清楚,唯一让我困惑的是这句话:
就我而言,我想将我最重要的提交带到我修复了 项目文件到底部,这样我就可以只推那个 提交到远程服务器。
但我们不是想做一种相反的事情吗?如果我们将提交“降到最低”,它将被视为最后一次(最近的)提交,如果我们在推送时使用它的哈希,我们将推送它之前的所有内容(这意味着“所有提交”) .
所以,我们想要做的是将我们的提交放在我们执行git rebase -i HEAD~5 时看到的文件中更高的位置。我说的对吗?
【问题讨论】:
标签: git git-rebase git-push