Git “我该怎么做?”;撤销;单分支克隆?
我使用Git “我该怎么做?”;撤销;单分支克隆?,git,github,Git,Github,我使用 git克隆-b——单分支 这只克隆了这个分支,但现在我想切换到主分支和其他分支。除了清除它并重新开始克隆回购协议的其余部分之外,还有什么办法可以撤销--single branch首选项吗?只需将原始回购协议添加为新的远程协议,然后就可以了 git remote add path/to/myrepo myNewOrigin git fetch myNewOrigin 如果您愿意,您甚至可以删除当前的“origin”遥控器,并将“myNewOrigin”重命名为“origin” 从那里您可
git克隆-b——单分支
这只克隆了这个分支,但现在我想切换到主分支和其他分支。除了清除它并重新开始克隆回购协议的其余部分之外,还有什么办法可以撤销--single branch首选项吗?只需将原始回购协议添加为新的远程协议,然后就可以了
git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin
如果您愿意,您甚至可以删除当前的“origin”遥控器,并将“myNewOrigin”重命名为“origin”
从那里您可以拉/合并/重基。您可以告诉Git这样拉所有分支:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
[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
如果您查看.git/config
,它将如下所示:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
[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
我将其与完整克隆进行了比较,发现唯一的区别是[远程“源代码”]
下的“获取”
注意:我运行的是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只需更改本地回购的git/config文件,
[remote origin]部分的行获取
在这样的事情之前
[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的答案,结果成功了。但在我将更多代码提交到我的新分支后,我无法进行任何进一步的更改
还有另一种方法可以完全重置单个分支
,这里没有提到:
git remote remove origin
git remote add origin git@gitlab.com:{yourProject}/{yourRepo}.git
git branch --set-upstream-to=origin/{yourBranch} {yourBranch}
git pull
这会将所有内容重置为原始状态。要将另一个远程分支添加到我的本地存储库中,该存储库是使用--single branch
克隆的,以下操作对我有效:
git remote set-branches --add origin [remote-branch]
git fetch
git checkout [remote-branch]
您还可以为[远程分支]
使用通配符,例如
git remote set-branches --add origin release-1.*
git fetch
git checkout release-1.5
这可以使用git版本2.21.1。其他建议执行的回答git fetch origin[远程分支]:[local branch]
不起作用,因为它在未跟踪状态下创建本地分支。当运行git pull时,它首先尝试将远程分支的所有提交再次合并到本地分支。对我来说有效:
git remote remove origin
git remote add origin https://*<yourPath>*.git
git fetch
git远程删除源
git远程添加源https://**.git
git获取
我只是想向你表示特别的感谢,因为我做了大量的阅读和谷歌搜索,没有遇到类似的事情。很高兴能提供帮助。git
命令行工具功能非常强大(事实上,大多数命令都是通过其他命令实现的),因此,一旦您了解了存储库的布局(基本上是.git
文件夹的工作原理),就可以用它做很多事情了。这对我不起作用-在运行这些命令后,git show ref tags
仍然失败。请注意,如果使用以下语法浅克隆分支,此解决方案也会起作用,这与OP:git clone--depth=1--branchname描述的缺点相同git@github.com:foobar/repo.git destinationpath
Wow,这远远不是直观的!奇怪的是Git没有一个命令来完成这个任务。是的,我让它工作了。。。现在我也知道了inthe.git目录中的配置文件!这将在.git/config中添加多个fetch=
行,当您希望在远程上的两个分支之间切换,但不获取一大堆其他分支时,这非常方便。谢谢我第二次回到这个答案。非常有用。谢谢最有用的答案