如何克隆特定的git提交

Java教程 2025-08-26

克隆特定的git提交

没有一个命令可以使开发人员克隆特定的git commit。在git中,开发人员只能克隆分支,而不是施法。

但是有解决方法。为了实现执行特定git commit的git克隆的等效结果,请遵循以下两个步骤:

  1. 克隆包含特定git commit的分支。

  2. 将工作空间的状态重置回该特定的git提交。

另一种方法是克隆包含特定git commit的存储库,然后从该特定的提交点创建一个新分支。

每种方法的好处和缺点

克隆和分析方法的优点是您在整个过程中都保留在一个分支上。缺点是,将更改重新推回原始存储库可能会引起问题,尤其是在使用共享仓库时。

使用克隆和分支的方法,创建了一个新的分支。这不是一个缺点,因为本地分支很容易删除。如果您的更新需要将其推回远程存储库,则可以将新分支合并到原始分支中,然后推动而不会打扰提交历史记录。

因此,克隆和分支方法通常是您计划在克隆特定提交后向后推更改时的更安全选择。

git克隆的步骤

请按照以下步骤克隆特定的git犯罪:

  1. 获取远程存储库的URL。

  2. 执行远程存储库的git克隆

  3. 切换到包含提交的分支。

  4. 获得克隆提交的七位数SHA ID。

  5. 发出硬重置,指向提交ID。

特定的git提交克隆示例

我有一个github存储库,其中第三个在主分支上的提交具有FCBD92B的ID。

这是克隆此特定git commit的代码:

克隆特定@commit:〜$ git克隆https://git**hu*b.com/cameronmcnz/rock-paper-scissors.gitcloning进入'rock-paper-scissers'

查看GIT日志证实了第三个提交后背具有FCBD92B的ID:

克隆特定@commit:〜$ git log -n 5 -Oneline3ab3c6f(head)添加了阶段jenkinsfile1d1bbfc固定jenkinsfile fcbd92b fcbd92b更新jenkinsfile326f527合并

重置克隆到特定的git commit ID

要重置负责人,工作目录和提交历史记录回到具有FCBD92B ID的特定git commit,您需要执行硬式git重置

克隆特定@commit:〜$ git重置 -  hard fcbd92b头现在位于fcbd92b更新jenkinsfile

当该命令完成时,最终结果等效于特定提交的git克隆

硬重置使开发人员能够克隆特定的git commit ID。

替代git提交ID克隆策略

另一种策略是遵循以下三个步骤:

  1. 克隆远程存储库。

  2. 根据特定的提交ID创建一个新分支。

  3. 切换到新分支。

命令克隆单个git提交ID

运行以下命令的结果等于单个git commit的克隆。

 clone-specific@commit:~$ git clone https://githu*b*.c*om/cameronmcnz/rock-paper-scissors.gitCloning into 'rock-paper-scissors'...clone-specific@commit:~$ git branch specific-commit-branch fcbd92b specific-commit-branch createdclone-specific@commit:~$ git switch specific-commit-branchSwitched要分支“特定委托分支”

在创建分支机构后对GIT日志进行检查并签出后,显示了当地存储库的状态指向感兴趣的承诺:

克隆特异性@commit:〜$ git log  -  all-decorate-nelie-graph* 3ab3c6f(onect/oneration/master,orient/oild/head,master)update jenkinsfile* 1d1bbfc update jenkinsfile* fcbd92b(head-> extim-commit-commit-commit-branch)

克隆单个git提交的一种方法是使用克隆分支命令。

如何最大程度地减少克隆深度

开发人员可能想克隆特定的git犯罪的原因有很多。

这些原因之一是最大程度地减少从服务器返回的数据量。毕竟,拥有丰富的提交历史记录的存储库会删除大量数据。

特定提交ID的浅git克隆

避免深克隆的一种方法是设置克隆深度。该策略也被称为做浅副本。

克隆特定@commit:〜$ git克隆-  depth 5 https://github.com/cameronmcnz/rock-paper-scissors.git克隆到“岩石 - 帕珀 - 塞士” ...

发布此命令的结果是它仅取下五个提交。

如果此浅副本中包含特定的git提交对克隆的提交,则可以在上面执行上述重置和分支命令。