Git 将默认分支从主分支更改为签出以进行开发

Git 将默认分支从主分支更改为签出以进行开发,git,git-clone,git-checkout,Git,Git Clone,Git Checkout,在一个新的存储库中,我经常发现自己对主分支进行了更改,当然我应该从开发分支开始 当然,在开始进行更改之前,我应该创建一个功能分支,在这种情况下,我会注意到我是在master上,而不是在develop上。 但是,git中是否也有一个将默认克隆/签出分支更改为开发的设置?是的,有一种方法可以做到这一点 当您运行git clone时,您的git会调用其他git。另一个Git有一个存储库;您的Git将创建其存储库的新副本 如果为您的git克隆提供-b branch参数,您的git将使用git check

在一个新的存储库中,我经常发现自己对主分支进行了更改,当然我应该从开发分支开始 当然,在开始进行更改之前,我应该创建一个功能分支,在这种情况下,我会注意到我是在master上,而不是在develop上。

但是,git中是否也有一个将默认克隆/签出分支更改为开发的设置?

是的,有一种方法可以做到这一点

当您运行
git clone
时,您的git会调用其他git。另一个Git有一个存储库;您的Git将创建其存储库的新副本

如果为您的
git克隆提供
-b branch
参数,您的git将使用
git checkout branch
结束克隆过程。所以这是最简单的方法,但是如果您忘记运行
git checkout
,您可能也忘记了
-b
参数

如果您不提供
-b分支
,您的Git将从另一个Git获得建议的最佳分支。然后,您的Git将其用于最后的
Git签出
步骤。因此,如果您有权访问另一个Git存储库,您只需转到那里并更改它将建议的分支

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

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

如果您无法登录到服务器,服务器可能会也可能不会提供某种方法来执行等效操作。

是的,有一种方法可以做到这一点

当您运行
git clone
时,您的git会调用其他git。另一个Git有一个存储库;您的Git将创建其存储库的新副本

如果为您的
git克隆提供
-b branch
参数,您的git将使用
git checkout branch
结束克隆过程。所以这是最简单的方法,但是如果您忘记运行
git checkout
,您可能也忘记了
-b
参数

如果您不提供
-b分支
,您的Git将从另一个Git获得建议的最佳分支。然后,您的Git将其用于最后的
Git签出
步骤。因此,如果您有权访问另一个Git存储库,您只需转到那里并更改它将建议的分支

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

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

如果您无法登录到服务器,服务器可能会也可能不会提供某种方式来执行相应的操作。

默认的分支git签出由远程回购的
头决定,它几乎总是指向
。我不知道本地设置会改变
clone
的默认设置。(您可以使用警告来近似该行为;请参见下文。)因为git通常不能假设任意远程设备中存在任何给定名称的分支(包括
master
),所以我不希望它具有这样的特性;它依靠遥控器来告诉它默认的分支是什么(同样,通过遥控器的

默认情况下,签出
master
对于许多分支模型中的开发人员来说并不是最方便的事情,但这是一种根深蒂固的惯例;所以我的建议是让你的工作流程习惯适应这一点,而不是试图做相反的事情

但有哪些选择呢

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

git clone --branch develop http://some.server/repo.git
在此基础上,您可以使用
--branch
选项定义要克隆的别名。(但如果在没有您所选名称的分支机构的回购协议上使用别名,则该别名将失败。)


对于您控制的回购,您可以更改
标题
,以指向您选择的分支,但我确实建议您不要这样做,原因有几个。首先,如果回购协议是共享的,可能会引起混乱。(类似地,这可能会使构建工具的设置复杂化,尽管这确实不难处理。)但我不这么认为的最大原因是,在使用自己的回购协议时,您正在养成习惯,而这些习惯不会转化为使用他人的回购协议。

默认的git签出分支由远程回购协议的
头决定,它几乎总是指向
master
。我不知道本地设置会改变
clone
的默认设置。(您可以使用警告来近似该行为;请参见下文。)因为git通常不能假设任意远程设备中存在任何给定名称的分支(包括
master
),所以我不希望它具有这样的特性;它依靠遥控器来告诉它默认的分支是什么(同样,通过遥控器的

默认情况下,签出
master
对于许多分支模型中的开发人员来说并不是最方便的事情,但这是一种根深蒂固的惯例;所以我的建议是让你的工作流程习惯适应这一点,而不是试图做相反的事情

但有哪些选择呢

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

git clone --branch develop http://some.server/repo.git
在此基础上,您可以使用
--branch
选项定义要克隆的别名。(但如果在没有您所选名称的分支机构的回购协议上使用别名,则该别名将失败。)

对于您控制的回购,您可以更改
标题
,以指向您选择的分支,但我确实建议您不要这样做,原因有几个。首先,它是m