将默认分支更改为 checkout from master to develop

Change default branch to checkout from master to develop

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

是的,有办法做到。

当你 运行 git clone <url> 你有你的 Git 呼叫其他 Git。另一个 Git 有一个存储库;您的 Git 创建了他们存储库的新副本。

如果您向 您的 git clone 提供 -b <em>branch</em> 参数, 您的 Git 以 git checkout <em>branch</em> 结束克隆过程。所以这是最简单的方法,但是当然如果你忘记了 运行 git checkout,你也可能会忘记 -b 参数。

如果您供应-b <em>分支</em>,您的Git 从 other Git 获得 建议的最佳分支 。然后,您的 Git 将其用于最后的 git checkout 步骤。因此,如果您有权访问 other Git 存储库,您只需去那里更改它建议的分支。

另一个 Git 将建议的分支由该存储库中签出/当前的分支决定。由于大多数服务器存储库是 "bare"(没有工作树),您实际上无法在那里签出分支,但它们仍然有一个 current 分支。您可以使用 git symbolic-ref:

更新它
server$ cd repo
server$ git symbolic-ref HEAD refs/heads/develop

如果您无法登录到服务器,服务器可能会也可能不会提供一些方法来做同样的事情。

默认分支 git 检出由远程仓库的 HEAD 决定,它几乎总是指向 master。我不知道会更改 clone 默认值的本地设置。 (你可以用警告来近似这种行为;见下文。)因为 git 通常不能假设任何给定名称的分支(包括 master)会存在于任意远程中,我不期望它具有这样的功能;它依靠遥控器告诉它默认分支是什么(同样,通过遥控器的 HEAD)。

默认签出 master 对于许多分支模型中的开发人员来说并不是最方便的事情,但这是一个非常根深蒂固的约定;所以我的建议是调整你的工作流程习惯,而不是试图做相反的事情。

但是有哪些选择呢?

对于给定的 clone 命令,您可以使用 --branch 选项来 select 最初签出的内容

git clone --branch develop http://some.server/repo.git

在此基础上,您可以使用 --branch 选项定义要克隆的别名。 (但如果在没有您选择的名称的分支的回购协议上使用别名将会失败。)

对于您控制的回购,您可以更改 HEAD 以指向您选择的分支,但出于多种原因我真的建议您不要这样做。首先,如果共享 repo 可能会造成混淆。 (同样,它可能会使构建工具的设置复杂化,尽管这真的不难处理。)但我不会这样做的最大原因是,你在使用自己的回购协议时正在养成习惯,而这些习惯不会转化为使用他人的存储库。