首页 文章

如何在Git中克隆单个分支?

提问于
浏览
631

我有一个名为'skeleton'的本地Git存储库,用于存储项目框架 . 它有一些分支,用于不同类型的项目:

casey@agave [~/Projects/skeleton] git branch
* master
  rails
  c
  c++

如果我想查看一个新项目的主分支,我可以做

casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/

一切都是我想要的 . 具体来说,新的主分支指向骨架主分支,我可以推拉以移动对基本项目设置的更改 .

什么没有得到它所以我只拉动我想要的分支,例如 rails 分支,然后新的存储库有一个 master 分支,默认情况下推送到骨架存储库的 rails 分支 .

这有什么好办法吗?或者,也许这不是Git想要我构建事物的方式,我当然对此持开放态度 . 也许我应该有多个存储库,Ruby on Rails骨架存储库跟踪主骨架存储库?任何克隆Ruby on Rails骨架存储库的单个项目 .

14 回答

  • 672

    注意: git1.7.10 (April 2012) 实际上允许你 clone only one branch

    # clone only the remote primary HEAD (default: origin/master)
    git clone --single-branch
    
    as in:
    git clone <url> --branch <branch> --single-branch [<folder>]
    

    你可以在t5500-fetch-pack.sh看到它:

    test_expect_success 'single branch clone' '
      git clone --single-branch "file://$(pwd)/." singlebranch
    '
    

    Tobu comments

    在进行浅层克隆时这是隐含的 . 这使得git clone --depth 1成为节省带宽的最简单方法 .

    从Git 1 . 9 . 0(2014年2月)开始,浅克隆支持数据传输(推/拉),因此该选项现在更有用 .
    请点击“Is git clone --depth 1 (shallow clone) more useful than it makes out?”了解更多 .


    "Undoing"浅层克隆详见“Convert shallow clone to full clone”(git 1.8.3)

    # unshallow the current branch
    git fetch --unshallow
    
    # for getting back all the branches (see Peter Cordes' comment)
    git config remote.origin.fetch refs/heads/*:refs/remotes/origin/*
    git fetch --unshallow
    

    Chris评论:

    让错过的分支反转的神奇线 - 单分支是(git v2.1.4):

    git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
    git fetch --unshallow
    
  • 1

    一种方法是执行以下操作 .

    git clone user@git-server:project_name.git -b branch_name /your/folder
    

    branch_name 是您选择的分支,"/your/folder"是该分支的目标文件夹 . 确实,这将使其他分支机构为您提供来回合并的机会 . 现在,从Git 1.7.10开始,您现在可以执行此操作

    git clone user@git-server:project_name.git -b branch_name --single-branch /your/folder
    
  • 2

    使用Git版本1.7.3.1(在Windows上),这是我的工作( $BRANCH 是我要签出的分支的名称, $REMOTE_REPO 是我要克隆的远程存储库的URL):

    mkdir $BRANCH
    cd $BRANCH
    git init
    git remote add -t $BRANCH -f origin $REMOTE_REPO
    git checkout $BRANCH
    

    这种方法的优点是随后的 git pull (或 git fetch )调用也将只下载所请求的分支 .

  • 16

    你可以尝试冗长的方式:

    mkdir newrepo.git
    cd newrepo.git
    git init
    git remote add origin file:///path/to/original
    git fetch origin branchiwant:refs/remotes/origin/branchiwant
    git checkout -b branchiwant --track origin/branchiwant
    

    这样做是:

    • 创建并初始化一个空的Git存储库 .

    • 将原始存储库添加为远程调用源 .

    • 仅从远程调用的原点获取所需的分支 .

    • 创建并签出一个新分支,该分支设置为跟踪刚刚克隆的源分支 .

    希望这将是你所追求的 .

  • 0

    您可以使用以下命令执行此操作:

    git clone -b branch_name --single-branch project_url local_folder_to_clone_in
    
  • 642

    git-clone man page

    --single-branch 是您在克隆期间的朋友记得使用 --branch <branch name> 或者只克隆远程主要HEAD(默认为master)

    永远记得按Ctrl F5来读取新的来源,而不是缓存中的那个:-)(我很久没知道这个选项了 . )

  • 103
    git clone <url> --branch <branch> --single-branch
    

    只需输入URL和分支名称即可 .

  • 25

    可以分两步完成

    • 克隆存储库

    • git clone <http url>

    • 检查您想要的分支

    • git checkout $BranchName

  • 14

    要克隆Git的一个分支,你没有公钥,使用这个:

    git clone -b <branch> <Git repository URL or clone URL you get from Git repository>
    
  • 5

    克隆完成后,我必须输入 git submodule update --init --recursive 才能下载所有子模块

  • 2

    打开cmd .

    cd folder_name (输入克隆分支的路径)

    只需一个命令:

    git clone url_of_projecturltoclone -b branch_name
    
  • 1

    只克隆一个分支 . 这是最简单的方法:

    $ git clone -b BRANCH_NAME --single-branch git@bitbucket.org:___/PROJECTNAME.git
    
  • 1

    要克隆特定分支,您可以执行以下操作:

    git clone --branch yourBranchName git@yourRepository.git

  • -3
    • 打开Git Bash shell .

    • 在文件系统中创建要签出的目录 .

    • $ mkdir Feature_develop_branch

    • 将目录更改为 Feature_develop_branch 文件夹 .

    • $ cd Feature_develop_branch

    • 使用外部克隆URL克隆存储库 .

    • $ git clone https://someurl.repositoryName.git

    • 克隆后,将目录更改为创建的repositoryName .

    • $ cd / repositoryName

    • 查看分支机构 .

    • $ git checkout <Branch Name>

相关问题