【问题标题】: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】:
注意:您可以查看任何分支的提交历史记录,而无需使用
切换到该特定分支
git log <branch_name>