设置git来拉动并推动所有分支

喜你入骨 提交于 2020-01-09 20:14:56

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

我想默认推送和拉出所有分支,包括新创建的分支。

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

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

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


#1楼

最简单的方法是:

git push --all origin

这将推动标签和分支。


#2楼

如果您要将分支机构移动到旧的仓库并且没有本地的所有旧仓库分支,则需要先跟踪它们。

for remote in `git branch -r | grep -v '\->'`; do git branch --track $remote; done

然后添加新的远程仓库:

git remote add bb <path-to-new-repo>

然后你可以使用这个命令全部推送:

git push -u bb --all

或者您可以使用此处其他响应中提到的git config命令配置repo,如果您没有这样做或只想移动本地分支。

重要的是,其他响应只会推动所有LOCAL分支。 如果分支仅存在于备用REMOTE存储库中,则它们将在不先跟踪它们的情况下移动。 这里介绍的for循环将有助于此。


#3楼

使用现代git,您总是获取所有分支 (作为远程跟踪分支到refs/remotes/origin/*名称空间,使用git branch -rgit remote show origin可见)。

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

如果要始终推送所有分支 ,可以设置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 = user@example.com:/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/*

#4楼

要使用git branch -a查看所有分支,您应该执行:

for remote in `git branch -r`; do git branch --track $remote; done
git fetch --all
git pull --all

现在你可以看到所有的分支:

git branch

推动所有分支尝试:

git push --all

#5楼

我曾使用以下命令将所有分支迁移到新存储库。

~$ git clone --mirror <url_of_old_repo>
~$ cd <name_of_old_repo>
~$ git remote add new-origin <url_of_new_repo>
~$ git push new-origin master
~$ git push new-origin --mirror

注意 :在将Atlassian Stash的repo克隆到AWS CodeCommit (空白回购)时,我必须使用倒数第二个(即首先推送主控)命令。 我不确定原因,但在推送( git push new-origin --mirror )之后,默认分支指的是除了master之外的其他一些分支。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!