代码之家  ›  专栏  ›  技术社区  ›  Roman

如果我们只想推动承诺,那么我们应该在重定基础的同时提高或降低承诺吗?

  •  0
  • Roman  · 技术社区  · 7 年前

    我已经拔出了主树枝。在《本地大师》中,我做出了几项承诺。现在,我只想推送最后一次提交(而不是之前的提交)。我如何做到这一点?

    我找到了一个很好的解释: 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 . 我说得对吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   ElpieKay    7 年前

    如果您只想推送一次提交 cfoo 到分支机构 bbar ,这里有一个简单的解决方案:

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

    在实际情况下,您可能需要运行 git stash 或者执行其他操作来备份解决方案。

    至于“更高”,是的,在之后弹出的文本编辑器中 git rebase -i ,第一行是最早的提交。如果只想推送一次提交,请将其放在第一行。