将默认分支更改为从master检出到开发

时间:2019-01-08 14:38:37

标签: git git-clone git-checkout

在一个新的存储库中,我经常发现自己已经对master分支进行了更改,当然我应该从develop分支开始。
当然,在开始进行更改之前,我应该先创建一个功能分支,在这种情况下,我会发现我在使用Master而不是在开发中。
但是git中是否还有设置可以更改默认的clone / checkout分支进行开发?

2 个答案:

答案 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指向您选择的分支,但是出于某些原因,我确实建议您不要这样做。首先,如果共享仓库,可能会造成混乱。 (类似地,它可能会使构建工具的设置复杂化,尽管这实际上并不难处理。)但是我不愿意这样做的最大原因是,您在使用自己的存储库时会养成习惯,而这些习惯不会转换为使用他人的存储库。