Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git “我该怎么做?”;撤销;单分支克隆?_Git_Github - Fatal编程技术网

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=
行,当您希望在远程上的两个分支之间切换,但不获取一大堆其他分支时,这非常方便。谢谢我第二次回到这个答案。非常有用。谢谢最有用的答案