【问题标题】:Git pull from another repositoryGit 从另一个仓库拉取
【发布时间】:2014-09-09 01:22:43
【问题描述】:

我有一个名为Generic 的存储库,它是一个通用应用程序。我已经将它分叉到一个名为 Acme 的存储库中,它只是基于存储在 Generic 存储库中的应用程序构建,并向其中添加了 Acme Co 品牌。

如果我对Generic 中的核心功能进行更改,我想使用我对Generic 中的核心功能所做的最新更改来更新Acme 存储库。我该怎么做?

据我所知,我实际上是在尝试将上游存储库中所做的更改合并到当前的分支中。

如果这意味着什么,我会尝试这样做,因为我有一个通用应用程序,然后我会在此基础上构建并为个人客户打造品牌(如本例中的 Acme)。如果有更清洁的方法,请告诉我。

【问题讨论】:

    标签: git version-control repository dvcs


    【解决方案1】:

    正如@vin 提到的,您可以直接从另一个仓库拉取而无需添加新的来源(假设从另一个仓库的master 分支拉到本地master 分支):

    git pull https://some-other-repo.git master:master 
    

    如果两个存储库的提交历史没有关联,则需要--allow-unrelated-histories,但请谨慎使用,因为这意味着您知道自己在做什么。

    您也可以push将本地仓库添加到另一个仓库将其添加为远程(远程分支不必存在,因此您可以使用任何东西你想要,例如master:new_branch):

    git push https://some-other-repo.git master:master
    

    【讨论】:

      【解决方案2】:

      为了从不同的 repo 中提取特定分支,您可以使用以下 git 命令。

      git pull <git_url> <branch> --allow-unrelated-histories
      

      【讨论】:

        【解决方案3】:

        在您的 Acme 存储库中发出以下命令。它添加了一个名为 upstream 的新远程存储库,该存储库指向 Generic 存储库。

        git remote add upstream https://location/of/generic.git
        

        然后,您可以使用以下命令将对 Generic 所做的任何更改合并到 Acme 中的当前分支:

        git pull upstream
        

        如果您只希望它下载更改而不自动合并,请使用git fetch 而不是git pull

        如果您想禁用推送到该存储库,请使用类似的方式将推送 URL 设置为无效 URL

        git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"
        

        如果您尝试推送到 upstream,Git 现在会因为找不到 repo 而对您大喊大叫(对于 Rickroll 感到抱歉,但这是第一个突然出现在我脑海中的随机字符串)。

        【讨论】:

        • 太好了,谢谢。还有一件事:有没有办法让这个遥控器成为只读的,所以我不会不小心推送到它?
        • 我开始回答,但我看到 McLovin 已经编辑了他的回答,将其包括在内。
        • 从 git 2.9 开始,您需要指定 --allow-unrelated-histories 标志。见stackoverflow.com/a/37938036/3799847
        • 我需要发出git pull --allow-unrelated-histories upstream master
        • 我试过了,但 git pull upstream 只是挂了...有什么想法吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-28
        • 2013-10-03
        • 1970-01-01
        • 2018-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多