Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 可以在Git中为分支别名吗?_Svn_Git_Version Control_Build Automation - Fatal编程技术网

Svn 可以在Git中为分支别名吗?

Svn 可以在Git中为分支别名吗?,svn,git,version-control,build-automation,Svn,Git,Version Control,Build Automation,我正在考虑大规模使用git。我希望通过呼叫master branch trunk来提高采用率并使事情变得更容易 这可以也将给SVN用户一些舒适感。我知道我可以创建一个名为trunk的分支,但这似乎偏离了git规范,可能会导致一些用户感到困惑 我知道我也可以创建和删除我心中的标签,但当我签出这些标签时,它告诉我这是一个非本地分支,对我来说很好,但可能不是我想要做的 我是一个十足的git新手,但在发布和构建系统方面经验丰富 我想做的是能够调用master trunk。我已经看到了别名命令的功能,这是

我正在考虑大规模使用git。我希望通过呼叫master branch trunk来提高采用率并使事情变得更容易

这可以也将给SVN用户一些舒适感。我知道我可以创建一个名为trunk的分支,但这似乎偏离了git规范,可能会导致一些用户感到困惑

我知道我也可以创建和删除我心中的标签,但当我签出这些标签时,它告诉我这是一个非本地分支,对我来说很好,但可能不是我想要做的

我是一个十足的git新手,但在发布和构建系统方面经验丰富

我想做的是能够调用master trunk。我已经看到了别名命令的功能,这是否也适用于版本化对象的名称


我知道git svn和其他工具的存在,但分层存储库系统的开销让我感到害怕。

git中的“master”这个名字没有什么特别之处,它只是按照惯例(默认情况下)被称为master。如果您愿意,您当然可以称之为“主干”:

git branch -m master trunk

这与Subversion非常相似,在Subversion中,“trunk”这个名字也只是按照惯例被称为“trunk”。您可以在Subversion中调用主分支“master”。

您可以按照Greg的建议重命名主分支主干,或者您也可以创建一个对主分支进行符号引用的主干,以便git和svn用户都拥有他们习惯使用的“main”分支

git symbolic-ref refs/heads/trunk refs/heads/master

请注意,trunk不是一等公民。如果您签出
trunk
并执行
git状态
,您将实际处于
master
,但是您可以在使用分支名称(日志、合并等)的所有位置使用
trunk
命令。

这是围绕Charles Bailey回答中所示技术的安全包装


$git branch alias

如果不知道您的新约定,新的拉取器会不知道从哪里开始吗?公共存储库的头部会指向“trunk”,这样拉取器就不必知道。为这两种类型的用户提供服务是我主要关心的问题。在服务器上执行此操作是否足以使别名完全可见?我会投票支持你,因为我还没有这方面的信用。我不认为如果使用git://或ssh协议,symrefs会转移到clone——你最好检查一下。我也不认为,它们会转移到普通的远程ref,但它们都会跟踪symref-ed中心分支,所以在某种程度上(也许)这并不重要。我能想到的一个区别是,您必须在按下后获取,以注意到另一个远程分支也移动了。请非常小心参数的顺序。这与
ln-s
不同,如果你把它们放错了方向,git会很高兴(并且默默地)用一个不存在的符号引用(在这一点上,你最好希望很容易恢复该分支的正确提交散列)来重击真正分支的HEAD ref,不要试图用
git branch-d
删除符号ref。即使对于该操作,它也会被取消引用,因此您实际上会删除源分支,而将引用留在后面(如果您当前已签出该分支,它甚至会允许您这样做)。您必须使用
git symbolic ref--delete
(或者,如果您使用的是较旧的版本,则必须手动删除该文件)。对于我来说,在zsh中OS X上的git 2.7.0,这将失败:
目标refs/heads/-l不存在。
无论我使用什么参数。感谢您的回复!在回答您的问题时,是的,这就是确切的信息:
Target refs/heads/-l不存在。
我在bash下进行了测试,但它仍然存在。我颠倒了论点,但它仍然这样做。我在zsh中使用了
unalias git
,以确保没有任何干扰,但它仍然这样做。我使用了git的完整路径,但它仍然做到了。我使用了
git branch alias
的完整路径,但它仍然这样做。我不认为这有什么关系,但是
其中-a git
显示了我系统上的两个版本。我不认为第二个可以用,但是。。。我得到了
/usr/local/bin/git
/usr/bin/git
,第一个在路径前面。第二个版本是2.5.4。@iconoclast:2.8.3现已发布。发行说明中的第6项涵盖了前面评论中讨论的bug:这个上游特性请求有进展吗?现在有很多git存储库从
master
转移到
main
,这样的工具对于保持本地克隆的一致性非常有用,因此您不必记住哪些repo已经切换过,哪些没有切换过。