如何在 dev 分支上工作,但将 master 保留为默认克隆分支
How to work on dev branch but keep master as default clone branch
我有一个用于开发某些功能的本地存储库。
我想分享该功能,同时继续开发它。
为此,我想要一个开发分支。
我希望允许人们克隆我的本地存储库并默认接收主分支,而不必在我将存储库检出到开发分支时明确要求它。
即允许人们“git克隆/sapir/repo/.git”并接收主分支
即使当时 /sapir/repo 实际上已在开发分支上检出。
有没有办法在不为自己保留存储库的第二个副本的情况下实现这一目标?
简短的回答是否定的。但是你设置了一个奇怪的情况:
您有天真的用户,他们不知道当他们 运行 git clone
、他们 选择 他们的 Git 创建 .1 的分支没有明确的选择,他们选择让他们的 Git 创建您的分支Git 推荐。
您是(或至少正在努力成为)一个了解 git clone
工作原理的老练用户,因此,如果此人 运行 ning git clone
既不使用 -n
(完全避免创建分支)也不使用 -b
(选择要创建的内容),运行ning git clone
将从你自己的 Git 中挑选一个推荐。您自己的 Git 推荐您的 work-tree 中 当前分支 的分支,或者,如果此 Git 存储库是空的,那么将是当前:即 HEAD
.
中存储的任何名称
不过,作为老练的用户,您应该已经知道 Git:
- 可以在本地使用硬链接,或者使用
--reference
和alternates机制来共享对象存储;
- 应该有一个裸存储库来接收
git push
指令;
- 因此,不需要任何活动的 work-tree,这样您就可以在这个裸存储库的
HEAD
中存储任何您喜欢的东西。
意识到这些事情后,您只需创建一个裸存储库,然后使用 --reference
在本地 and/or 克隆它并在克隆中工作,而不是首先问这个问题。如果您有一些特殊和复杂的原因不使用裸存储库,您也可以使用 git worktree add
,前提是您的 Git 版本至少为 2.5(最好至少为 2.15,以避免 git worktree
).
1记住git clone
复制全部 commits,2 但 no branches.复制提交后,git clone
的最后一步——除非通过 -n
禁止——是 运行 和 git checkout
,并且 创建 一个 new 分支。这个新分支通常与克隆源中的分支名称具有相同的名称这一事实很有趣且有用,但并不是特别 重要 因为新克隆是一个单独的存储库,因此不需要使用相同的名称。
2更准确地说,它从将在新克隆中结束的所有名称复制所有可达的提交:remote-tracking 名称和标签名称,主要是。通过各种选项,例如 --single-branch
and/or --no-tags
,您可以选择这些名称中的哪些将出现在克隆中。您还可以使用 --depth
或 --shallow-since
和类似选项创建 shallow clone,以排除一些提交和相关对象。最近,您可以启用 promissory packs,从而创建一个 部分克隆 ,尽管这需要大量工作才能使其对更多用户实用。
我有一个用于开发某些功能的本地存储库。 我想分享该功能,同时继续开发它。 为此,我想要一个开发分支。
我希望允许人们克隆我的本地存储库并默认接收主分支,而不必在我将存储库检出到开发分支时明确要求它。
即允许人们“git克隆/sapir/repo/.git”并接收主分支 即使当时 /sapir/repo 实际上已在开发分支上检出。
有没有办法在不为自己保留存储库的第二个副本的情况下实现这一目标?
简短的回答是否定的。但是你设置了一个奇怪的情况:
您有天真的用户,他们不知道当他们 运行
git clone
、他们 选择 他们的 Git 创建 .1 的分支没有明确的选择,他们选择让他们的 Git 创建您的分支Git 推荐。您是(或至少正在努力成为)一个了解
中存储的任何名称git clone
工作原理的老练用户,因此,如果此人 运行 ninggit clone
既不使用-n
(完全避免创建分支)也不使用-b
(选择要创建的内容),运行ninggit clone
将从你自己的 Git 中挑选一个推荐。您自己的 Git 推荐您的 work-tree 中 当前分支 的分支,或者,如果此 Git 存储库是空的,那么将是当前:即HEAD
.
不过,作为老练的用户,您应该已经知道 Git:
- 可以在本地使用硬链接,或者使用
--reference
和alternates机制来共享对象存储; - 应该有一个裸存储库来接收
git push
指令; - 因此,不需要任何活动的 work-tree,这样您就可以在这个裸存储库的
HEAD
中存储任何您喜欢的东西。
意识到这些事情后,您只需创建一个裸存储库,然后使用 --reference
在本地 and/or 克隆它并在克隆中工作,而不是首先问这个问题。如果您有一些特殊和复杂的原因不使用裸存储库,您也可以使用 git worktree add
,前提是您的 Git 版本至少为 2.5(最好至少为 2.15,以避免 git worktree
).
1记住git clone
复制全部 commits,2 但 no branches.复制提交后,git clone
的最后一步——除非通过 -n
禁止——是 运行 和 git checkout
,并且 创建 一个 new 分支。这个新分支通常与克隆源中的分支名称具有相同的名称这一事实很有趣且有用,但并不是特别 重要 因为新克隆是一个单独的存储库,因此不需要使用相同的名称。
2更准确地说,它从将在新克隆中结束的所有名称复制所有可达的提交:remote-tracking 名称和标签名称,主要是。通过各种选项,例如 --single-branch
and/or --no-tags
,您可以选择这些名称中的哪些将出现在克隆中。您还可以使用 --depth
或 --shallow-since
和类似选项创建 shallow clone,以排除一些提交和相关对象。最近,您可以启用 promissory packs,从而创建一个 部分克隆 ,尽管这需要大量工作才能使其对更多用户实用。