协慌网

登录 贡献 社区

设置 git 来拉动所有分支

我想默认情况下推拉所有分支,包括新创建的分支。

我可以为它定义一个设置吗?

否则,当我在本地添加新分支并且要从服务器中将其提取时,最简单的方法是什么?

我用相同的名称创建了一个新分支,并尝试拉,但它不起作用。向我询问分支的所有远程配置。我该如何设置。

答案

最简单的方法是:

git push --all origin

这将推送标签和分支。

使用现代 git 时,您始终会获取所有分支(作为进入refs/remotes/origin/*命名空间的git branch -rgit remote show origin看到)。

默认情况下(请参见push.default config 变量的文档),您推送匹配的分支,这意味着您首先必须执行git push origin branch以便 git 始终在git push上推送它。

如果要始终推送所有分支,则可以设置推送 refspec。假设遥控器被命名为origin ,则可以使用git config

$ git config --add remote.origin.push '+refs/heads/*:refs/heads/*'
$ git config --add remote.origin.push '+refs/tags/*:refs/tags/*'

或直接编辑.git/config文件,使其具有以下内容:

[remote "origin"]
        url = [email protected]:/srv/git/repo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        fetch = +refs/tags/*:refs/tags/*
        push  = +refs/heads/*:refs/heads/*
        push  = +refs/tags/*:refs/tags/*

在 push 规范中包含 + 可能不是一个好主意,因为这意味着即使没有 - f ,git 也会很乐意进行非快进推送,并且如果将远程服务器设置为接受那些,则可能会丢失历史记录。

试试这个:

$ git config --add remote.origin.push 'refs/heads/*:refs/heads/*'
$ git config --add remote.origin.push 'refs/tags/*:refs/tags/*'
$ git config --add remote.origin.fetch 'refs/heads/*:refs/remotes/origin/*'
$ git config --add remote.origin.fetch 'refs/tags/*:refs/tags/*'