2014-09-04 83 views
2

我尝试设置一个usb-hdd作为我所有本地回购的移动版本。我使用的所有内容都不在线,现在不共享。所以唯一的合作者就是我。 因此,我们的目标是保存我的整个进度,并将其从其他机器上的USB克隆。重要的部分是,所有的标签和特别是分支都被推,拉。我并不是真的想为每个分支手动做些事情。 现在我克隆我的回购使用Git:从裸露的USB遥控器上取下所有东西

$ cd /Volumes/usb 
$ git clone --mirror /path/to/working/repo 

,现在我想拉一切从裸(据我所知镜意味着裸)的回购协议。 于是我去到另一台机器/文件夹中,并做了

$ git clone file:///Volumes/usb/repo.git 

和主分支本地克隆,我得到一个工作目录。然而,所有其他分支只是在远程(裸usb回购),不拉。 如果我使用git branch -r,我可以在遥控器上看到所有这些,但拉不能做任何事情。

$ git br -a 
* devel 
    remotes/origin/HEAD -> origin/devel 
    remotes/origin/devel 
    remotes/origin/master 

$ git pull origin master 
From /test/repo 
* branch   master  -> FETCH_HEAD 
Already up-to-date. 
$ git br -a 
* devel 
    remotes/origin/HEAD -> origin/devel 
    remotes/origin/devel 
    remotes/origin/master 

没有改变,它没有设置本地分支。整个问题甚至会将所有的远程分支机构设置为本地分支机构。我真的想开始,我离开的地方。然而

回答

1

所有其他部门都只是远程(裸USB回购)并不会被拉开

他们拉。
而你看到他们,不是在“远程”,而是在你的本地回购中的命名空间来源。

如果你真的想拥有这些远程跟踪分支为分支,看到onle班轮我在“git pull all branches from remote repository

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

一旦所有地方分公司正在跟踪远程跟踪分支使用,你仍然要使用script if you were to pull all branches

+0

@mike请升级到最新的git:http://apple.stackexchange.com/a/127073 – VonC 2014-09-04 11:17:35

+0

正如这里所述:http://stackoverflow.com/questions/67699/how-to-clone-all- remote-branches-with-git?rq = 1 没有原生的方式。如果有人发现更好的工作流程,请回答我。 到目前为止,脚本的方式起作用,就像建议的那样。 – mike 2014-09-04 12:26:56