2008-10-03 76 views
11

我们正在使用一个半集中的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:我决定保留本地和远程分支名称相同。看起来这将是最少的工作,并且最不容易出现未来的问题。

+0

当您修改.git/config时,不要忘记先将其备份。如果你搞砸了,你只需要恢复已知的好文件就可以回到相应的状态。 – webmat 2008-10-03 22:23:00

+0

在进行git部署来托管像Heroku,Nodester和AppFog这样的服务时,这实际上会出现很多。 – studgeek 2012-07-11 21:42:33

回答

3

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

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

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

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

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

我不知道如何用git-config命令做到这一点。

请注意,从现在开始,所有分支都会在您进行直接git推(不带参数)时被推到相同位置。

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

1

你可以用这样的遥控器上的映射你的分支到不同的跟踪分支:

git remote add heroku [email protected]:YOURAPPNAME.git 
git checkout -b heroku -t heroku/master 

你的配置结束了类似于@保罗建议(实际上有点“简单”)。

看到这个要点(与我调整)的使用步骤,这对我很好用https://gist.github.com/2002048

相关问题