Git 将特定提交推送到远程存储库
本文概述了在 Git 中将特定提交推送到远程存储库的过程。 假设我们有一个包含多个提交的 Git 存储库,而我们只需要推送一个提交,我们将如何处理呢?
将特定提交推送到远程存储库
要将单个提交推送到远程存储库,我们在如下所示的上下文中使用 Git push 命令。
$ git push <remote> <commit id>:<remote branch>
一如既往,我们将使用一个例子来说明这个概念。
下面的示例显示了一个包含四个提交的演示存储库,如下图所示。
假设我们要将初始提交推送到远程存储库。 我们将如何着手?
假设我们是第一次推送到远程存储库,我们将按照以下步骤操作。
首先,我们将远程仓库添加到我们的本地仓库,如下所示。
$ git remote add origin https://github.com/Wachira11ke/Demo.git
要将初始提交推送到远程,我们将运行:
$ git push origin 6b0f31a:refs/heads/master
由于我们是第一次推送到远程,所以我们需要使用 refs/heads/master 参数在远程存储库中创建一个 master 分支。 此命令只会将我们的初始提交推送到远程仓库。
如果我们只想推送第一个提交,即更新许可证怎么办?
运行 git push origin c87321d:master
不会产生预期的效果。
这是因为 Git 会将所有提交推送到并包括指定的提交。 我们不想要那样,是吗?
我们需要重新安排提交,以便第一个提交是最后一个。 我们的更新许可证提交应该在初始提交之后立即进行。
我们可以通过在交互模式下运行 git rebase 命令来做到这一点,如下所示。
$ git rebase -i HEAD~3
此命令将打开一个文本编辑器。 我们将使用 pick 命令并重新排列提交,如下所示。
我们现在可以退出文本编辑器并完成变基。 你的提交历史不应该是这样的:
我们现在可以将提交推送到远程存储库,如下所示。
$ git push origin 20136f7:master
我们的远程存储库应该只包含两个提交。
- 初始提交提交
- 更新许可证提交。
让我们确认一下我们的情况。
总之,git push <remote> <commit id>:<remote branch>
允许我们将特定提交推送到远程存储库。
但是,该命令会将所有提交推送到并包括指定的提交。 要解决这个问题,您将需要使用 git rebase 命令重新安排您的提交,如我们所示。