关于git:我如何“撤销” – 单分支克隆?

How do I “undo” a --single-branch clone?

我用

git clone -b --single-branch

这只克隆了这个分支,但现在我想切换到主分支和其他分支。除了清除它并重新克隆回购的其余部分之外,还有什么方法可以撤消——单分支首选项吗?


你可以告诉Git像这样拉所有的分支:

1
2
git config remote.origin.fetch"+refs/heads/*:refs/remotes/origin/*"
git fetch origin

如果你看.git/config,它会像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote"origin"]
    url = https://github.com/owner/repo.git
    fetch = +refs/heads/master:refs/remotes/origin/master
[branch"master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

我把它比作一个完整的克隆,发现唯一的区别是在[remote"origin"]下的"fetch"。

注意:我运行的是git版本1.8.2。如果您运行的是旧版本的Git,则配置选项可能已更改。如果我的命令不起作用,那么我建议查看.git/config,看看你是否能看到类似的东西。


如果要添加单个分支,可以执行以下操作:

1
2
git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]

适用于Git版本1.9.1


只需将原始回购添加为一个新的遥控器,然后在那里工作?

1
2
git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin

如果您愿意,甚至可以删除当前的"origin"remote,并将"myneworigin"重命名为"origin"。

从那里你可以拉/合并/重新平衡。