15

我们在我工作的地方使用半集中式 git 存储库。每个开发人员在中央 git 存储库中都有自己的子树,所以它看起来像这样:

掌握
爱丽丝/分支1
爱丽丝/分支2
鲍勃/分支1
迈克尔/功能
发布/1.0
发布/1.1

我在我的树中本地工作topic/feature,这对应michael/feature于中央树。

我一直在使用

git push origin topic/feature:michael/feature

将我的更改推送到远程树。然而,这很麻烦并且容易出错(例如省略开发者名称、拼写错误的功能名称等)。

我正在寻找一种更清洁的方法来做到这一点。例如,“ git push”。我怀疑使用修改后的 fetch refspec 设置一个不同的遥控器会做到这一点,但我不确定该怎么做。我也不确定如何修改我当前的分支定义以使用不同的遥控器。

我的电流.git/config看起来像:

[遥远的“起源”]
    url = git://central/git/project
    fetch = +refs/heads/*:refs/remotes/origin/*
[分支“主题/功能”]
    远程=原点
    合并 = refs/heads/michael/project

编辑:我也想将此应用于拉取/获取。但是管家branch.<name>.merge管这事吗?

如果我发现了什么,我会继续研究这个并在这里发布,但我希望能得到一些其他的好主意。

编辑 2:我决定保持本地和远程分支名称相同。看来这将是最少的工作,也最不容易出现未来的问题。

4

4 回答 4

3

在您的 [remote "origin"] 部分中,为每个映射添加一行。包括大师对大师。

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

我不确定如何使用 git-config 命令执行此操作。

请注意,从现在开始,当您执行直接 git push(没有参数)时,所有分支都会被同时推送。

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

于 2008-10-03T22:19:13.180 回答
3

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

要在本地和远程存储库中使用不同的前缀,您需要在每次创建新功能分支时向配置文件添加映射。为 topic/BRANCH_NAME 设置映射的命令是

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
于 2008-10-04T05:09:17.050 回答
2

采用

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

其中 origin/remoteBranch 是远程名称,localBranch 是本地分支名称。

于 2020-10-23T14:30:51.423 回答
1

您可以使用以下方式将您的分支映射到远程上的不同跟踪分支:

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

您的配置最终类似于@Paul 的建议(实际上有点“简单”)。

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

于 2012-03-13T23:44:46.823 回答