跟踪所有远程git分支作为本地分支

将单个远程分支作为本地分支进行跟踪非常简单。

$ git checkout --track -b ${branch_name} origin/${branch_name}

将所有本地分支推送到远程,根据需要创建新的远程分支也很容易。

$ git push --all origin

我想做相反的事。 如果我在单一来源中拥有X个远程分支机构:

$ git branch -r 
branch1
branch2
branch3
.
.
.

我可以为所有这些远程分支创建本地跟踪分支,而无需手动创建每个分支? 说一些像:

$ git checkout --track -b --all origin

我使用了Google和RTM,但到目前为止已经出现了。


使用bash:

在git 1.9.1之后
for i in `git branch -a | grep remote | grep -v HEAD | grep -v master`; do git branch --track ${i#remotes/origin/} $i; done

学分: Val Blant,elias和Hugo

在git 1.9.1之前

注意:如果在更高版本的git(> v1.9.1)中使用以下代码,则会导致这种情况

  • (bug)所有创建的分支来跟踪主
  • (烦恼)所有创建的本地分公司名称都以前缀origin/
  • for remote in `git branch -r `; do git branch --track $remote; done
    

    更新分支机构,假设您的本地跟踪分支没有任何更改:

    for remote in `git branch -r `; do git checkout $remote ; git pull; done
    

    忽略模棱两可的refname警告,git似乎更喜欢本地分支。


    Otto给出的答案很好,但是所有创建的分支都有“origin /”作为名字的开头。 如果你只是希望最后一部分(在最后一个/之后)成为你的结果分支名字,使用这个:

    for remote in `git branch -r | grep -v /HEAD`; do git checkout --track $remote ; done
    

    它也有没有给你任何关于含糊不清的refs的警告。


    这里是我使用的单线程(在bash shell中,使用msysgit1.7.4进行测试):

    复制粘贴:

    remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^/]+//,"",$1); print $1}'`; do git branch --set-upstream-to $remote/$brname $brname; done
    

    为了更多的可读性:

    remote=origin ; // put here the name of the remote you want
    for brname in `
        git branch -r | grep $remote | grep -v master | grep -v HEAD 
        | awk '{gsub(/^[^/]+//,"",$1); print $1}'
    `; do 
        git branch --set-upstream-to $remote/$brname $brname; 
    done
    
  • 它只会选择remote变量中指定的remote分支的上游分支(它可以是' origin '或任何您为当前Git仓库的其中一个远程仓库设置的名称)。
  • 它会通过awk表达式提取分支的名称: origin/a/Branch/Name => a/Branch/Name
  • 它会将上游分支设置为--set-upstream-to (或-u ),而不是--track
    好处是,如果分支已经存在,它不会失败,并且不会更改该分支原点,它只会配置branch.xxx.(remote|merge)设置。

    branch.aBranchName.remote=origin
    branch.aBranchName.merge=refs/heads/a/Branch/Name
    
  • 该命令将为所有远程上游分支创建本地分支,并将其远程和合并设置设置为该远程分支。

    链接地址: http://www.djcxy.com/p/26145.html

    上一篇: Track all remote git branches as local branches

    下一篇: Receive Hook for Website Staging