在Git中,当我将本地分支推送到远程分支时,如何将它们配置为具有前缀?
我所在的团队有一个分支命名标准,该标准要求在中央git存储库中为分支指定一个特定前缀。该前缀如下:在Git中,当我将本地分支推送到远程分支时,如何将它们配置为具有前缀?,git,Git,我所在的团队有一个分支命名标准,该标准要求在中央git存储库中为分支指定一个特定前缀。该前缀如下: dev/<name>/<topic> 在本地,出于理智的原因,我不想处理前缀。这是使键入命令更加乏味的样板文件。相反,我希望我的本地分支只是,在上面的示例中,它只是我的功能 我想看看我可以构建什么样的推送和获取工作流,以使前缀尽可能透明。首先,让我分享一些我目前在全局.gitconfig中设置的有趣的配置选项: [push] default = current [
dev/<name>/<topic>
在本地,出于理智的原因,我不想处理前缀。这是使键入命令更加乏味的样板文件。相反,我希望我的本地分支只是
,在上面的示例中,它只是我的功能
我想看看我可以构建什么样的推送和获取工作流,以使前缀尽可能透明。首先,让我分享一些我目前在全局.gitconfig
中设置的有趣的配置选项:
[push]
default = current
[remote]
pushDefault = fork
远程特定的设置在这里可能并不重要,但为了完整起见,我将其包括在内。我想支持三种不同的用例:
dev/john
前缀的远程分支时,我希望它们在本地出现在refs/remotes/origin/
下。例如,远程分支refs/heads/dev/john/my feature
应在本地获取到refs/remotes/origin/my feature
refs/heads/my feature
推到远程origin
时,它应该映射到远程上的refs/heads/dev/john/my feature
refs/heads/master
时,它仍应转到遥控器上的refs/heads/master
。master
分支应完全忽略前缀.git/config
中的origin
的远程配置。注意,我现在只测试了gitpush
,我意识到fetchrefspec不支持上面的第一个用例
[remote "origin"]
url = git@mydomain:myrepo
fetch = +refs/heads/dev/john/*:refs/remotes/origin/*
fetch = +refs/heads/*:refs/remotes/origin/*
push = refs/heads/master:refs/heads/master
push = refs/heads/*:refs/heads/dev/john/*
以下是我迄今为止观察到的情况:
git-fetch-origin
到目前为止在所有情况下都有效:在refs/heads/dev/john/
下的分支映射到refs/heads/origin/
。其他一切都是我们都习惯的法线直接映射git push-n origin master
产生了预期的结果git push-n origin my feature
产生了预期的结果。具体而言:
- [新分支]我的功能->dev/john/my功能
my feature
的本地分支后,命令git push-n origin
push不尊重push.default
,而是推送所有本地分支。我的期望是,如果remote.origin.push
设置在refspec中包含通配符,则仍然使用push.default
。在没有指定源分支的情况下,我希望它仍然假设我正在推送当前分支,但只是将其映射到另一个远程引用git push-n origin
案例断言的行为。具体来说,[git push]文档说(我的重点):
当命令行没有指定使用..
参数或--all
,--mirror
,--tags
选项推送的内容时,命令会通过查阅remote.*来查找默认的
。推送配置,,如果找不到它,接受推送。默认配置决定推送的内容
因此,我想,所有这些最终都是一个很长的问题:我如何使git push-n origin
在给定的配置下给我与git push-n origin相同的行为我的特性(注意配置本身的更改是可以接受的)你做到了吗?我需要同样的,但没有叉子。
[remote "origin"]
url = git@mydomain:myrepo
fetch = +refs/heads/dev/john/*:refs/remotes/origin/*
fetch = +refs/heads/*:refs/remotes/origin/*
push = refs/heads/master:refs/heads/master
push = refs/heads/*:refs/heads/dev/john/*