【问题标题】:Is it possible to cherry-pick a commit from another repository without cloning the entire repository?是否可以在不克隆整个存储库的情况下从另一个存储库中挑选提交?
【发布时间】:2016-09-13 03:16:03
【问题描述】:

我的带宽非常有限,所以我想知道是否可以在不实际克隆的情况下从另一个存储库获取提交。 这两个存储库具有相同的文件结构,但它们根本不共享历史记录。他们俩都是相互独立的,但我仍然想从其中一个人那里挑选一个提交给另一个人。 这可能吗?

【问题讨论】:

  • @TimBiegeleisen 那里的问题只是询问是否可以从其他存储库中挑选,但是我的问题是在不克隆其他存储库的情况下做同样的事情..
  • 我相信这个问题提供了一个选项,可以在不克隆 repo 的情况下进行操作。
  • 难道 git fetch 也不会克隆 repo 吗?
  • 看这里,获取将拉下 remoteBranch 并将其放入名为“remoteBranch”的本地分支中。创建您不应该直接操作的远程分支的本地副本;而是创建一个适当的本地分支并进行处理。取自:blog.mikepearce.net/2010/05/18/…

标签: git clone commit cherry-pick


【解决方案1】:

简短回答:理论上可行,但不容易做到。

来自“Retrieve specific commit from a remote Git repository”,您需要:

  • git repo 托管 server 与:
    • git 2.5+
    • git config uploadpack.allowReachableSHA1InWant true(在服务器端)
  • 具有单次提交提取的浅层克隆(同样,git 2.5+,客户端)

即:您将初始化一个空的 repo,添加远程源 repo 的 url,并且:

git fetch --depth=1 ../testrepo/.git <SHA1>

这只会带来 一个 提交。

【讨论】:

  • “git repo 托管服务器”是什么意思
  • 是的,不过如果你打算挑选它们之间的区别,你会想要获取 两个 提交。
  • @AbhishekRanjan 我的意思是你需要一个 git 在服务器端(远程 repo url 引用的服务器),它具有正确的版本(2.5+)和配置(uploadpack.allowReachableSHA1InWan)跨度>
  • @AbhishekRanjan "git repo hosting server":位于远程服务器上的 git,用于管理您正在克隆的裸存储库。
  • 哦,在我的情况下,github 是服务器,这可以正常工作吗? @VonC​​pan>
【解决方案2】:

你可以从另一个 git repo 获取提交的分支,然后 git cherry-pick 它。

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 2013-11-06
    • 2013-06-04
    • 1970-01-01
    • 2013-08-25
    • 2021-07-22
    • 2012-10-05
    • 2015-03-09
    相关资源
    最近更新 更多