我们上周遇到了一个问题,那就是我们团队的一名成员前往我们的GitHub存储库并在该标签/分支下拉列表的分支列表中搜索了一个标签名称,并在输入标签名称后按下了返回。但它是标签的名称,他们选择了分支标签。所以GitHub帮助创建了一个分支(来自master)(当团队成员按下返回时)。但是我们没有意识到这种情况已经发生,直到有人试图部署标签并取代分支。
还有其他人有这个问题吗?我们正在尝试使用标签/来测试部署,但我们有2个部署环境,一个在AWS上,另一个在基于capistrano。我们的版本capistrano显然不喜欢这种语法,如果你使用refs / tags /它将剥离" refs / tags /"部分和使用只是。所以这让我担心AWS正在做什么。我现在正试图对此进行调查,但我在主厨方面并不是很出色,所以我想我会问这里。
有没有办法阻止在GitHub中创建与标签同名的分支? AWS是否使用tags/
部分或剥离出来?
答案 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也会被保留。