我可以将本地分支映射到git中具有不同前缀的远程分支吗?

时间:2008-10-03 16:19:23

标签: git heroku phpfog nodester

我们正在这里工作的半集中式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:我已经决定将本地和远程分支名称保持不变。它似乎是最不起作用的,也是最不容易出现未来问题的。

4 个答案:

答案 0 :(得分:3)

在[remote“origin”]部分中,为每个映射添加一行。包括硕士到掌握。

push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature

我不确定如何使用git-config命令。

请注意,从现在开始,当你进行直接的git推送时(没有参数),所有分支都会被推动。

您是否愿意解释为什么不在本地和远程保留相同的分支名称?

答案 1 :(得分:2)

如果可以的话,我建议您在本地使用相同的分支名称。远程。然后git push将所有本地分支推送到中央存储库中的相应分支。

要在本地和远程repos中使用不同的前缀,每次创建新的功能分支时都需要在配置文件中添加映射。设置主题/ BRANCH_NAME映射的命令是

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME

答案 2 :(得分:1)

您可以使用以下内容将分支映射到遥控器上的不同跟踪分支:

git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master

你的配置最终与@Paul建议的相似(实际上有点“简单”)。

请参阅此要点(由我调整),了解适合我的使用步骤https://gist.github.com/2002048

答案 3 :(得分:0)

使用

git branch --set-upstream-to=origin/remoteBranch localBranch