GitHub分支与标记同名

时间:2015-01-14 23:10:17

标签: git amazon-web-services github

我们上周遇到了一个问题,那就是我们团队的一名成员前往我们的GitHub存储库并在该标签/分支下拉列表的分支列表中搜索了一个标签名称,并在输入标签名称后按下了返回。但它是标签的名称,他们选择了分支标签。所以GitHub帮助创建了一个分支(来自master)(当团队成员按下返回时)。但是我们没有意识到这种情况已经发生,直到有人试图部署标签并取代分支。

还有其他人有这个问题吗?我们正在尝试使用标签/来测试部署,但我们有2个部署环境,一个在AWS上,另一个在基于capistrano。我们的版本capistrano显然不喜欢这种语法,如果你使用refs / tags /它将剥离" refs / tags /"部分和使用只是。所以这让我担心AWS正在做什么。我现在正试图对此进行调查,但我在主厨方面并不是很出色,所以我想我会问这里。

有没有办法阻止在GitHub中创建与标签同名的分支? AWS是否使用tags/部分或剥离出来?

2 个答案:

答案 0 :(得分:1)

您可能想要探索的途径是编写客户端pre-push hook

如果预推钩退出0,则会阻止推动。如果退出1,则允许推送继续。

根据文件:

  

此挂钩由git push调用,可用于防止推送   发生。使用两个参数调用钩子   目标远程的名称和位置,如果没有命名的远程   使用这两个值将是相同的。

     

钩子上提供了有关要推送的内容的信息   带有以下形式的行的标准输入:

     

<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF   例如,如果命令git push origin master:foreign则运行了   hook会收到如下所示的行:

     

refs/heads/master 67890 refs/heads/foreign 12345

我可以想象一个简单的脚本来检查&#34; branch&#34;的存在。在<local ref>中退出并显示消息"use tags, not branches"或其他内容。

为了将钩子传播到您的存储库,您需要set a hookPath using git config

答案 1 :(得分:-1)

为什么不重命名分支?

git branch -m new_name old_name

即使是reflog也会被保留。