【问题标题】:Get full commit history from a remote branch to a local orphan branch获取从远程分支到本地孤立分支的完整提交历史记录
【发布时间】:2019-04-17 08:24:26
【问题描述】:

我最近想克隆一个大型存储库,所以我最终克隆了一个分支。

git clone --single-branch dev git@github.com:xyz/abc.git

这个 repo 几乎没有其他分支,即 stage 和 master。

现在我的本地克隆只有dev 分支。

我的问题:我现在如何结帐到stage 分支?

我已尝试清除孤立分支 git checkout --orphan stage ,但无法从远程阶段分支获取完整的提交历史记录

【问题讨论】:

    标签: git github git-branch


    【解决方案1】:

    你可以这样做:

    git fetch <remote> <remote_branch>:<local_branch>
    git checkout <local_branch>
    

    例子:

    git fetch origin stage:stage
    git checkout stage
    

    这会从远程分支stage 下载引用/对象,并创建一个名为stage 的本地分支,其中包含完整的历史记录。

    【讨论】:

      【解决方案2】:

      git clone --single-branch dev git@github.com:xyz/abc.git 应该退出并显示错误 fatal: repository 'dev' does not exist。也许您在dev 之前错过了-b--branch

      在您的情况下,git checkout --orphan stage 将从dev 的最新提交创建一个孤立分支stage。这不是你想要的。

      stage 的历史尚未完全获取。获取stage 并创建一个本地stage

      git fetch origin stage:stage
      

      结帐stage:

      git checkout stage
      

      这样,本地的stage 可能没有上游分支。稍后您可以运行git push origin -u stage:stage

      如果你打算从stage创建一个本地孤儿分支foo,你可以运行:

      git fetch origin stage --depth 1
      git checkout --orphan foo FETCH_HEAD
      git commit
      

      【讨论】:

        【解决方案3】:
        • 将 1 个或所有远程分支提取到本地计算机中。
        • 切换到所需的分支
        • 从远程存储库中提取最近的更改。

          git fetch --all // All branch fetch
          
          git fetch <remote> <remote_branch_name> // Single branch fetch
          
          git checkout <remote_branch_name>
          
          git pull <remote> <branch_name>
          

        注意:您可以查看任何分支的提交历史记录,而无需使用

        切换到该特定分支
           git log <branch_name>
        

        【讨论】:

          猜你喜欢
          • 2015-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-08
          • 2017-01-25
          • 2013-06-03
          • 1970-01-01
          • 2015-07-24
          相关资源
          最近更新 更多