EGit - 创建分支时正确设置远程跟踪

3
当我使用EGit从远程分支创建一个新分支时,我的远程跟踪设置错误:
我从远程分支refs/heads/master创建本地分支feature1,并立即向上游推送。然后在我的.git/config文件中配置了以下远程跟踪:
[branch "feature1"]
    remote = origin
    merge = refs/heads/master

因此,在该分支中进行拉取和推送将从/向远程主分支进行拉取和推送。相比之下,我更希望使用以下跟踪配置:
[branch "feature1"]
    remote = origin
    merge = refs/heads/feature1

我知道我甚至可以从EGit修复它,但我担心我的团队中的其他开发人员没有意识到这一点,并将未完成的功能推送到主分支。

我做错了什么吗?


Egit 3.2终于在2014年2月推出了设置上游分支的功能!请参见下面我编辑过的答案 - VonC
2个回答

1

Egit 默认情况下在从远程分支创建分支时,会将上游分支作为合并参数。
这意味着,如果您想强制执行策略,即仅从本地分支 master 推送到 remote/master,则可以尝试在本地强制执行它。

检查 Egit 是否遵循 git config push.default current 的规则,仅将当前分支推送到具有相同名称的上游分支(可能实际上成为 git1.7.10 之后的默认策略
但是,这样做存在一个问题,就是确保每个开发人员在其存储库中都启用了该策略。

(我认为您无法在“中央”存储库中强制执行该策略,您可以添加一个服务器端钩子,例如更新钩子:update 钩子:该脚本获取正在更新的分支的名称(即此处的 'master',而不是下游存储库中的分支名称,即此处的 'feature1')


注意:错误378960已在Egit 3.2中标记为已解决(2014年2月):

推送分支/初始推送向导简化了推送分支的操作,同时还允许为推送操作创建的新分支进行上游配置:

https://wiki.eclipse.org/images/6/6f/Egit-3.2-PushBranchWizard.png


0
也许你应该建议开发人员不要从远程跟踪分支(例如 origin/master)创建特性分支,而是从本地分支(master)创建。这样,EGit 就不会默认设置任何远程跟踪。
如果你决定首次发布该分支,bug 378960 实现后应该可以设置远程跟踪(相当于 git push --set-upstream)。

如果您需要将共享项目分支推送到GitHub,则以下内容并不是一个很好的答案。在这种情况下,您应该能够在创建时正确设置远程跟踪,这样就没有理由不能成功推送了。 - Johnathon Sanders
我已经编辑了我的回答,以反映错误378960最终得到解决! - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接