在一个新的存储库中,我经常发现自己已经对master分支进行了更改,当然我应该从develop分支开始。
当然,在开始进行更改之前,我应该先创建一个功能分支,在这种情况下,我会发现我在使用Master而不是在开发中。
但是git中是否还有设置可以更改默认的clone / checkout分支进行开发?
答案 0 :(得分:4)
是的,有一种方法可以实现。
运行git clone <url>
时,您的Git会调用其他Git。另一个Git有一个存储库;您的Git会为其存储库创建一个新副本。
如果您为您的 -b branch
提供git clone
参数,则您的 Git将以git checkout branch
结束克隆过程。因此,这是最简单的方法,但是,如果您忘记运行git checkout
,那么您当然也可能会忘记-b
参数。
如果您不供应-b branch
,您的Git将从 other Git中获得建议的最佳分支。然后,您的Git将其用于最后的git checkout
步骤。因此,如果您有权访问 other Git存储库,则只需转到那里并更改建议的分支。
另一个Git建议的分支由该存储库中已签出/当前的分支确定。由于大多数服务器存储库都是“裸机”(没有工作树),因此您实际上无法在其中签出分支,但是它们仍然具有 current 分支。您可以使用git symbolic-ref
更新它:
server$ cd repo
server$ git symbolic-ref HEAD refs/heads/develop
如果您无法登录到服务器,则服务器可能会或可能不会提供某种方式来进行等效操作。
答案 1 :(得分:2)
默认分支git签出是由远程存储库的HEAD
确定的,它几乎总是指向master
。我不知道会更改clone
的默认设置的本地设置。 (您可以通过警告来近似表示该行为;请参见下文。)由于git通常不能假定任意给定名称(包括master
)的分支都存在于任意远程中,所以我不希望它具有这样的行为一项功能;它依靠遥控器告诉它默认分支是什么(再次通过遥控器的HEAD
)。
对于许多分支模型中的开发人员而言,默认情况下签出master
并不是最方便的事情,但这是一个根深蒂固的惯例;因此,我的建议是适应您的工作流程习惯,而不要尝试相反的做法。
但是有什么选择呢?
对于给定的clone
命令,您可以使用--branch
选项选择最初检出的内容
git clone --branch develop http://some.server/repo.git
在此基础上,您可以定义一个别名,以使用--branch
选项进行克隆。 (但是,如果别名在没有分支的仓库中使用,别名将失败。)
要控制您的存储库,可以更改HEAD
指向您选择的分支,但是出于某些原因,我确实建议您不要这样做。首先,如果共享仓库,可能会造成混乱。 (类似地,它可能会使构建工具的设置复杂化,尽管这实际上并不难处理。)但是我不愿意这样做的最大原因是,您在使用自己的存储库时会养成习惯,而这些习惯不会转换为使用他人的存储库。