Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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 - Fatal编程技术网

Git 如何一次提取所有分支-包括新创建的分支?

Git 如何一次提取所有分支-包括新创建的分支?,git,Git,我知道还有其他问题可以解决这个问题。就是一个 问题在于,答案假设所有本地分支已经在跟踪某个远程分支(甚至远程存在) 我现在面临的问题是,我正在与一个远程团队合作,有时他们可能会创建一个本地没有的远程分支 在1命令中,如何拉取本地跟踪的分支的最新更改,以及所有未跟踪分支的最新版本 当我执行git pull时——所有的都只是拉取我跟踪的最新分支 谢谢 编辑: 我有两个遥控器-bitbucket和heroku 我想从我的bitbucketremote……而不是从我的herokuremote提取所有分支

我知道还有其他问题可以解决这个问题。就是一个

问题在于,答案假设所有本地分支已经在跟踪某个远程分支(甚至远程存在)

我现在面临的问题是,我正在与一个远程团队合作,有时他们可能会创建一个本地没有的远程分支

在1命令中,如何拉取本地跟踪的分支的最新更改,以及所有未跟踪分支的最新版本

当我执行git pull时——所有的都只是拉取我跟踪的最新分支

谢谢

编辑:

我有两个遥控器-
bitbucket
heroku

我想从我的
bitbucket
remote……而不是从我的
heroku
remote提取所有分支

我这样做:

$git pull bitbucket--all fatal:fetch--all不接受存储库参数

这是:

$git pull--all bitbucket fatal:fetch--all不接受存储库参数

还包括:


$git pull bitbucket密码:您请求从远程“bitbucket”提取,但未指定分支。由于这不是当前分支的默认远程配置,因此必须在命令行上指定分支。

$ git remote update
$ git pull --all

应该这样做-虽然不是1个命令

根据原始海报中关于他要从哪个遥控器取回的新信息更新了答案:

git fetch bitbucket
将更新您的远程跟踪分支,并在远程跟踪上有新分支时添加新分支

fetch
不会更新本地分支,除非您同时向其传递refspec,并且在这种情况下,它只会执行快进或强制更新,而不是真正的合并

以下是一个别名,它将从bitbucket中提取并更新远程跟踪分支和本地主分支:

sync = "!git checkout --quiet head && git fetch --prune bitbucket +refs/heads/*:refs/remotes/bitbucket/* master:master && git checkout --quiet - || git checkout --quiet -"
您可以这样使用它:
git-sync
。完成了

用于获取的
--prune
选项意味着它还将删除bitbucket remote中不再存在的分支的过时远程跟踪分支

refspec
+refs/heads/*:refs/remotes/bitbucket/*
意味着从bitbucket获取所有分支,并将它们映射到本地回购中bitbucket的远程跟踪分支。前面的
+
意味着它将允许强制更新,这对于您的远程跟踪分支通常是可以的

refspec
master:master
表示获取bitbucket上的
master
分支,并使用它更新本地
master
分支。因为没有
+
,所以它不会执行强制更新。如果您想允许这样做,请在前面添加一个
+
,如下所示:
+master:master

如果您碰巧签出了本地
master
,则必须首先执行
git签出——静默头
,否则
fetch
在签出时不会更新它。如果您在运行该命令时碰巧签出了它,它将直接签出您正在执行的提交(这就是
head
的意思),以便
master
分支标签在您不在其上时可以自由移动

git签出--quiet-| git签出--quiet-
将签出运行
git签出--quiet head
之前您所在的任何分支,而不管分支的获取和更新是否有效。(事实上,我在失败的情况下遇到了问题,我不知道为什么……如果你最终处于头部分离状态,只要运行
git checkout
,你就会没事的)


旧答案:


如果使用
git fetch--all
,将从您添加到repo的所有远程设备中获取所有分支。它不会更新所有本地分支,但这只是一个开始。

git fetch all也是一个非侵入性选项。

问题是我有两个遥控器。Heroku和bitbucket。我如何将其考虑在内?当我执行
git remote update
时,它检查的第一个远程设备是Heroku-我不希望它这样做。
git remote update bitbucket
应该最新获取bitbucket一个,我如何指定从
bitbucket
中提取<代码>$git pull bitbucket--all fatal:fetch--all不接受存储库参数。如果我只是做git pull--all
它首先尝试从heroku
拉。是的……我试过了。它不起作用
$git pull--all bitbucket fatal:fetch--all不接受存储库参数
$git pull bitbucket密码:您请求从远程“bitbucket”提取,但未指定分支。因为这不是当前分支的默认配置远程,必须在命令行上指定一个分支。< /代码>我在“你不应该(‘什么,从来没有’,‘好,几乎从来没有’)使用拉法反正“营自己,所以我认为这是一个特性。”我不想把所有遥控器的分支都拔出来。我只想把遥控器的所有分支都拔出来。如何使用
git fetch
实现这一点?@marcamillion
git fetch
应该可以满足您的需要。@marcamillion您是否只想更新远程跟踪分支并获取新的远程跟踪分支,还是还想更新您的repo的本地分支?我基本上想做一个pull(如果提供了该标志,则为fetch&merge/rebase)在`bitbucket上,这将更新我的本地分支及其远程等效分支上的所有更改,还将获取我刚刚创建的本地没有的任何新分支。请更新您的问题,并提供有关所需内容的更多详细信息(您使用或不希望从哪个遥控器获取)、到目前为止您尝试了哪些命令,以及结果是什么。@Cupcake我已经这样做了。 git fetch all