获取从远程分支到本地孤立分支的完整提交历史

Get full commit history from a remote branch to a local orphan branch

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

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

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

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

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

我已尝试清除一个孤立分支 git checkout --orphan stage,但无法从远程阶段分支

获取完整的提交历史记录

你可以这样做:

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

示例:

git fetch origin stage:stage
git checkout stage

这将从远程分支 stage 下载 refs/objects 并创建一个名为 stage 的具有完整历史记录的本地分支。

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
  • 将 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>