【问题标题】:Fetch specific commit from remote git repo从远程 git repo 获取特定的提交
【发布时间】:2015-01-10 09:29:42
【问题描述】:

所以,我基本上想要做的是从一个远程存储库中拉下一个给定的提交(由其 SHA 标识),然后将它作为一个新分支(我自动生成其名称)推送到另一个远程存储库。源代码库会有所不同,这些都是一次性操作,所以我不想git remote add 这些遥控器,也不想为提交创建参考/分支。而且我不想更改任何本地分支机构的 HEAD。

那么,我如何获取给定的远程提交(以及它的任何对我来说是新的父提交)并将其添加到我的本地 git 数据库中?

git pull 隐含涉及合并或变基,所以这是不可能的。

我试过git fetch https://github.com/foo/bar.git 7d0969daba1fdf9d5bb9bc9a2847fd1bc1c7e426
但这只会导致
error: no such remote ref 12819ad8e10e5906df5352d7d8fec1fceb1f3afc
(是的,我验证了该远程上存在该提交 SHA;看起来 git 无论如何都不接受 SHA)。

我的意思是,我想我可以想出一个任意的本地分支名称来始终将提交拉入,然后在每次推送后删除该分支,但这似乎不优雅...

【问题讨论】:

  • Git fetch 在设计上无法通过 SHA 获取。除了创建和删除分支之外,我没有看到任何解决方案。
  • @AndrewC 如果您将其重新发布为答案,我很乐意将其标记为已接受。
  • 这听起来像是重复的,但我找不到任何确切的东西,所以我会添加它
  • 从 Git 2.5 开始可以获取特定的提交,请参阅 stackoverflow.com/a/30701724/537554

标签: git git-fetch


【解决方案1】:

使用git fetch 从您的origin 存储库中获取所有提交。然后,在所需的提交上创建一个分支

git branch theBranch 7d0969dab

现在,你可以将这个分支推送到第二个仓库

git push https://github.com/secondRepo/bar.git theBranch:theRemoteBranchNameYouWant

【讨论】:

    【解决方案2】:

    Git 不允许您按设计通过 SHA 获取。根据之前与开发人员mailing list987654321@的对话,似乎没有任何计划启用它。

    您必须在遥控器上有一个引用才能获取。您应该能够自动生成我想像的这部分,因为您必须有一种机制来来回传递遥控器和 sha。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2014-03-18
      • 2019-06-24
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      相关资源
      最近更新 更多