我克隆了一个回购使用
git clone -b <branch name> --single-branch <github url> <target directory>
这仅克隆了这个分支,但现在我想切换到 master 和其他分支。除了清除它并重新开始克隆其余的存储库之外,还有什么方法可以撤消 --single-branch 首选项?
你可以像这样告诉 Git 拉取所有分支:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
如果你看.git/config
,它看起来像这样:
[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/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
我将此与完整克隆进行了比较,发现唯一的区别是[remote "origin"]
.
注意:我正在运行 Git 版本 1.8.2。如果您运行的是旧版本的 Git,配置选项可能已更改。如果我的命令不起作用,那么我建议您仔细.git/config
查看是否可以看到类似的内容。
如果要添加单个分支,可以执行以下操作:
git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]
适用于 git 版本 1.9.1
要将另一个远程分支添加到使用 克隆的本地存储库,--single-branch
以下对我有用:
git remote set-branches --add origin [remote-branch]
git fetch
git checkout [remote-branch]
您也可以使用通配符[remote-branch]
,例如
git remote set-branches --add origin release-1.*
git fetch
git checkout release-1.5
这适用于 git 版本 2.21.1。其他建议做的答案git fetch origin [remote-branch]:[local-branch]
不起作用,因为它在未跟踪状态下创建了本地分支。运行时git pull
,它首先尝试将远程分支的所有提交再次合并到我的本地分支。
对我来说工作:
git remote remove origin
git remote add origin https://*<yourPath>*.git
git fetch
只需将原始存储库添加为新的遥控器,然后在那里工作吗?
git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin
如果您愿意,您甚至可以删除当前的“origin”遥控器并将“myNewOrigin”重命名为“origin”。
从那里你可以拉/合并/变基。
只需更改.git/config
本地存储库的文件,fetch
即[remote origin] section
.
在这样的事情之前
[remote "origin"]
url = https://github.com/owner/repo.git
fetch = +refs/heads/master:refs/remotes/origin/master
以后会这样
[remote "origin"]
url = https://github.com/owner/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
我最初应用了 Dominik Pawlak 的答案,它奏效了。但是在我将更多代码提交到我的新分支之后,我无法进行任何进一步的更改。
还有另一种single-branch
完全重置的方法,这里没有提到:
git remote remove origin
git remote add origin git@gitlab.com:{yourProject}/{yourRepo}.git
git branch --set-upstream-to=origin/{yourBranch} {yourBranch}
git pull
这会将所有内容重置为原始内容。