Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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
使用深度1选项克隆时git签出新的远程分支_Git_Branch_Git Clone_Git Remote - Fatal编程技术网

使用深度1选项克隆时git签出新的远程分支

使用深度1选项克隆时git签出新的远程分支,git,branch,git-clone,git-remote,Git,Branch,Git Clone,Git Remote,在我克隆了一个回购协议之后,一个新的分支test被添加到originremote。但我仍然看到: $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master 我应该使用什么git命令来获得以下输出: $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/mast

在我克隆了一个回购协议之后,一个新的分支
test
被添加到
origin
remote。但我仍然看到:

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
我应该使用什么git命令来获得以下输出:

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test
问题不是我的问题,因为这是在我看到所有远程分支引用之后发生的

我无法再次克隆repo,因为其中包含我的本地更改/提交

那么,如何使用git命令将新的远程分支引用引入我的repo呢

我使用的BitBucket回购具有以下分支:


试验

git fetch
不起作用:

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git fetch
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git fetch origin 
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
简单一点就足够了

这将为您的回购带来来源/测试

然后a
git checkout-b test origin/test
将在本地声明该分支


检查()确认了问题的根源:

git配置文件中有一个细微的变化

  • 在新克隆的repo中,
    [remote“origin”]
    具有
    fetch=+refs/heads/*:refs/remotes/origin/*
  • 但是旧的repo有
    fetch=+refs/heads/master:refs/remotes/origin/master
我觉得这就是问题所在

的确如此

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
这应该可以解决问题。

找到了问题

深度为1的git克隆:

git clone --depth 1 <repo>
而不是:

[remote "origin"]                                                                                                
   url = git@bitbucket.org:jillix/cctool.git
   fetch = +refs/heads/*:refs/remotes/origin/*

这将使获取在携带所有远程引用时失败。

@GabrielPetrovay如果您在别处再次克隆该回购协议(仅用于测试),您是否看到
origin/test
?(
git分支-av
在新克隆中)@GabrielPetrovay在您当前的repo中是否
git remote-v
在测试分支中显示了右远程repo的正确url?是的,我刚刚克隆到一个新位置,我看到了它们:*master remotes/origin/HEAD->origin/master remotes/origin/crud\u链接\u ui remotes/origin/form\u更新remotes/origin/master查看帖子中的图像。(
test
分支只是为了简化问题)@GabrielPetrovay在
git remote-v
新克隆的回购和您的
原始回购
中返回相同的值。是的,它们是相同的:
$git remote-v
原始git@bitbucket.org:user/repo.git(获取)
原点git@bitbucket.org:user/repo.git(推送)
[remote "origin"]                                                                                                
   url = git@bitbucket.org:jillix/cctool.git
   fetch = +refs/heads/*:refs/remotes/origin/*