Git 如何一次提取所有分支-包括新创建的分支?
我知道还有其他问题可以解决这个问题。就是一个 问题在于,答案假设所有本地分支已经在跟踪某个远程分支(甚至远程存在) 我现在面临的问题是,我正在与一个远程团队合作,有时他们可能会创建一个本地没有的远程分支 在1命令中,如何拉取本地跟踪的分支的最新更改,以及所有未跟踪分支的最新版本 当我执行git pull时——所有的都只是拉取我跟踪的最新分支 谢谢 编辑: 我有两个遥控器-Git 如何一次提取所有分支-包括新创建的分支?,git,Git,我知道还有其他问题可以解决这个问题。就是一个 问题在于,答案假设所有本地分支已经在跟踪某个远程分支(甚至远程存在) 我现在面临的问题是,我正在与一个远程团队合作,有时他们可能会创建一个本地没有的远程分支 在1命令中,如何拉取本地跟踪的分支的最新更改,以及所有未跟踪分支的最新版本 当我执行git pull时——所有的都只是拉取我跟踪的最新分支 谢谢 编辑: 我有两个遥控器-bitbucket和heroku 我想从我的bitbucketremote……而不是从我的herokuremote提取所有分支
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的远程跟踪分支。前面的+
意味着它将允许强制更新,这对于您的远程跟踪分支通常是可以的
refspecmaster: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
实现这一点?@marcamilliongit fetch
应该可以满足您的需要。@marcamillion您是否只想更新远程跟踪分支并获取新的远程跟踪分支,还是还想更新您的repo的本地分支?我基本上想做一个pull(如果提供了该标志,则为fetch&merge/rebase)在`bitbucket上,这将更新我的本地分支及其远程等效分支上的所有更改,还将获取我刚刚创建的本地没有的任何新分支。请更新您的问题,并提供有关所需内容的更多详细信息(您使用或不希望从哪个遥控器获取)、到目前为止您尝试了哪些命令,以及结果是什么。@Cupcake我已经这样做了。
git fetch all