Git Orphan移除记录

如果我为git存储库创建一个孤立分支。

我做了git rm -rf。

在.git中是否仍然有我的历史记录和其他分支上的文件?我仍然可以检出master分支。

我应该只创建另一个存储库并清除.git吗?

检查我的孤立分支上的git登录仅显示我的初始提交。

xiekaixu 回答:Git Orphan移除记录

假设您的意思是git checkout --orphan name:这是为了使下一个提交成为根提交。您现在位于一个不存在的分支上。这基本上与在新的完全空的存储库中所处的状态相同。

如果您没有存储库,然后使用git init创建一个存储库,则该新存储库没有提交。这就产生了一个问题,因为在Git中,一个分支名称拥有一个实际的现有提交的哈希ID。因此,此空存储库不能有分支。它没有提交。分支必须标识提交,没有提交。因此它没有分支。但是,您在分支master上。

Git处理此问题的方法是允许您进入一个不存在的分支。这就是git checkout --orphan所做的,实际上是 all :将您带入一个不存在的分支。

在这种状态下,您执行的 next 提交将 create 提交。该提交的创建使分支存在。 Git将提交哈希ID写入分支名称,从而在流程中创建分支名称。现在,该分支已存在并具有一个提交。因为您所在的分支实际上并不存在,所以新提交没有父提交:它是根提交。

您编辑了要添加的问题:

  

我做了git rm -rf .

这仅影响Git的 index 。索引是Git用于保存将进入下一次提交的所有文件的实体。因此,索引现在实际上为空。除了在一个新的,完全为空的存储库中之外,这种状态是非常不寻常的:通常,索引保存从您检出的提交中复制的所有文件。在进行新的根提交之前,您需要使用git add将一些文件放入索引。

您还编辑了问题以消除问题:

  

它仍然在其他分支上有我的历史记录和文件吗...

是的。在Git中,历史是 is 提交;提交是历史。添加指向新的根提交的新分支名称,对任何现有分支名称及其指向的提交都没有影响。创建新的提交不会损害现有的提交。

您存储库中的所有提交都将继续存在于您的存储库中。现在,您的新根提交已在您的存储库中,并且您的分支名称也已存在,指向新的根提交。

,

我不确定您要做什么,但是如果您刚刚做了

git rm -rf .

没什么,您可能只做

git reset --hard

,然后回到git rm -rf之前的位置。这是您要寻找的“历史”吗?

或者,您可以硬重置到其他分支,也可以提交到先前的状态。

,
  

通常,在分支“ master”下创建新分支时,您将继承其提交历史记录。唯一的例外是孤儿(或   断开连接)分支。孤儿分支没有父子   与主分支的提交关系。

     

大多数提交都有一个父提交,一个明显的例外是root   没有父提交的提交。创建一个孤立的分支将    保留分支所基于的工作树,但没有祖先提交。

创建孤立分支时,请使用“孤立”标志运行checkout命令并为分支命名。 运行git log --oneline fatal: your current branch 'myorphanbranch' does not have any commits yet

这是因为孤立分支不继承父分支的提交。现在运行status命令。 git status

您会注意到,尽管所有文件都已复制到孤立分支中,但它们位于暂存区域中。这是因为到目前为止,在孤立分支中尚未执行任何提交。

我们可以使用git rm -rf删除工作树中的所有文件。命令。

现在,我们有了一个分支,其中没有提交,也没有文件。运行Git ls-files命令以查看孤立分支中的视图文件。您会注意到分支中没有文件。

尽管不常用孤立分支,但有时它们在编写文档和创建静态GitHub页面时非常方便。 它们有时还用于合并两个具有不同历史记录的不相关存储库。

本文链接:https://www.f2er.com/3139795.html

大家都在问