如果我们只想推送它,我们应该在提交时更高或更低的提交吗?

时间:2017-12-21 09:59:02

标签: git git-rebase git-push

我拉了主分支。在本地大师我做了几次提交。现在我想只推送最后一次提交(而不是之前的提交)。我如何实现这一目标?

我找到了一个很好的解释:How to push only one commit with Git。所以,命令应该是这样的:

unlist(Map(function(x, y, z) {
      x1 <- subset(organizations, Orgs == x& position == y, num_count)[,1]
    if(length(x1) > 0 && z <= x1) x else "2nd Choice"
    },
    Students$first_choice,Students$role,Students$id))

或者,以更“抽象”的形式:

git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master

但是,据我所知,在一般情况下,它将推送单个提交(由其哈希给出)。相反,它将推送指定的提交以及在指定的提交之前完成的所有提交。

因此,为了实现目标(仅推送一次提交),我们首先需要对提交进行重新排序,以便我们要推送的提交被视为最旧的提交(提交序列中的第一个提交)。如何做到这里描述:How to reorder commits with Git。这个描述很清楚,唯一令我困惑的是这句话:

  

在我的情况下,我想把我最重要的提交带到我修复的地方   项目文件到底部,以便我只能推动那个   提交到远程服务器。

但是我们想要做一种相反的情况呢?如果我们将提交“降到最底层”,它将被视为最后一个(最近的)提交,如果我们在推送时使用它的哈希,我们将推送它之前的所有内容(这意味着“所有提交”)

所以,我们想要做的是将我们的提交放在我们执行git push <remote name> <commit hash>:<remote branch name> 时看到的文件中。我是对的吗?

1 个答案:

答案 0 :(得分:1)

如果您只想将一个提交cfoo推送到分支bbar,这是一个简单的解决方案:

git fetch origin bbar
git checkout FETCH_HEAD
git cherry-pick cfoo
git push origin HEAD:bbar

在实际案例中,您可能需要运行git stash或执行其他操作来备份解决方法。

对于“更高”,是的,在git rebase -i之后弹出的文本编辑器中,第一行是最早的提交。如果你只想推送一个提交,那么把它放在第一行。