![](/img/trans.png)
[英]How can I convert all the remote branches in a local git repo into local tracking branches
[英]Can I map local branches to remote branches with different prefixes in git?
我们正在我工作的地方使用半集中式 git 存储库。 每个开发人员在中央 git 存储库中都有自己的子树,所以它看起来像这样:
master alice/branch1 alice/branch2 bob/branch1 michael/feature release/1.0 release/1.1
在我的树中本地工作我有topic/feature
,它对应于中央树中的michael/feature
。
我一直在用
git push origin topic/feature:michael/feature
将我的更改推送到远程树。 然而,这很麻烦并且容易出错(例如,省略开发者名称、拼错功能名称等)。
我正在寻找一种更清洁的方法来做到这一点。 例如,“ git push
”。 我怀疑使用修改后的 fetch refspec 设置不同的遥控器会做到这一点,但我不确定如何做到这一点。 我也不确定如何修改我当前的分支定义以使用不同的遥控器。
我当前的.git/config
看起来像:
[remote "origin"] url = git://central/git/project fetch = +refs/heads/*:refs/remotes/origin/* [branch "topic/feature"] remote = origin merge = refs/heads/michael/project
编辑:我也想将此应用于拉取/提取。 但是branch.<name>.merge
会负责吗?
如果我找到一些东西,我会继续研究这个并在这里发布,但我希望得到一些其他的好主意。
编辑 2:我决定保持本地和远程分支名称相同。 看起来这将是最少的工作,也最不容易出现未来的问题。
在您的 [remote "origin"] 部分,为每个映射添加一行。 包括大师到大师。
push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature
我不确定如何使用 git-config 命令执行此操作。
请注意,从现在开始,当您直接执行 git push(没有参数)时,所有分支都会被同时推送。
您愿意解释为什么不在本地和远程保留相同的分支名称吗?
如果可以,我建议您在本地和远程使用相同的分支名称。 然后git push
会将您所有的本地分支推送到中央存储库中的相应分支。
要在本地和远程存储库中使用不同的前缀,您需要在每次创建新功能分支时向配置文件添加映射。 为 topic/BRANCH_NAME 设置映射的命令是
git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
您可以使用以下内容将您的分支映射到远程上的不同跟踪分支:
git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master
您的配置最终类似于@Paul 建议的(实际上有点“简单”)。
请参阅此要点(由我进行调整)以了解对我有用的使用步骤https://gist.github.com/2002048 。
用
git branch --set-upstream-to=origin/remoteBranch localBranch
其中 origin/remoteBranch 是远程名称,localBranch 是本地分支名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.