我刚刚发现git checkout --orphan
,但我不知道如何使用它。它的帮助页面说它创建了一个新的无父分支。
在master
分支中,我尝试过git checkout --orphan br
,只是看到工作目录中的文件更改为“要提交的更改”,并且git log
说fatal: bad default revision 'HEAD'
.
那么使用有什么好处 git checkout --orphan
呢?
我刚刚发现git checkout --orphan
,但我不知道如何使用它。它的帮助页面说它创建了一个新的无父分支。
在master
分支中,我尝试过git checkout --orphan br
,只是看到工作目录中的文件更改为“要提交的更改”,并且git log
说fatal: bad default revision 'HEAD'
.
那么使用有什么好处 git checkout --orphan
呢?
for 的核心用途是在非新存储库上git checkout --orphan
创建类似状态的分支。git init
如果没有这个能力,你所有的 git 分支都会有一个共同的祖先,你的初始提交。这是一种常见的情况,但绝不是唯一的情况。例如,git 允许您将多个独立项目作为单个存储库中的不同分支进行跟踪。
这就是为什么您的文件被报告为“要提交的更改”的原因:在某种git init
状态下,尚未创建第一个提交,因此所有文件都是 git 的新文件。
它被例如GitHub Pages使用,它将一个 repo 的网站存储在 repo 内但在一个单独的分支上。没有理由在此分支上存储网站历史记录以外的任何内容。
我们正在从私人仓库转移到公共仓库,并且由于敏感的提交信息,我们希望将分支重置为new
并将其推送为空白分支。这是一个典型的工作流程方式:
另一个可能有用的用例是构建机器或虚拟实例以进行测试,这些测试需要特定的 .git 文件夹设置(例如用户、远程 url)并且由于空间限制而丢弃所有历史记录。不使用 Docker 等容器的传统设置通常会出现这种情况。
通常会为专门的部署分支而不是处理 master 来完成。将新分支推送到远程后,在实例上执行以下操作:
git clone [remote-url] --branch [name] --single-branch [folder]
直接使用 master 时,浅克隆将是一个更好的选择(不推荐):
git clone -–depth [depth] [remote-url]