使用空提交启动 Git 存储库有什么好处?

tor*_*tte 3 git

找到一篇关于使用空提交启动存储库的文章。看了几遍帖子,还是不明白其中的道理:

\n
    \n
  1. \n
    \n
    1.git log和其他命令会出现可怕的错误消息。
    \n
    2. 您可以\xe2\x80\x99git reset回到初始状态。
    \n
    \n

    根据上面前两节的标题,我怀疑这可能是一篇讽刺作品。

    \n
  2. \n
  3. \n
    \n
    3. 您可以\xe2\x80\x99t 重新设置初始提交的基准。
    \n
    \n

    然而,这似乎是一个有效的观点(与链接文章《鲜为人知的 Git 命令》相呼应)呼应),但当我开始思考它时,我只是看不出这在实践中有何用处(或者什么)它试图阻止)。

    \n
  4. \n
  5. 原帖链接:(2008?)Git Magic - 附录\xc2\xa0A.\xc2\xa0Git 缺点:初始提交

    \n

    我同意“从 0 开始计数”的观点,但除了迂腐之外,仍然不明白空的初始提交有什么好处。

    \n
  6. \n
  7. 原帖链接:(2010) 如何初始化我的 Git\xc2\xa0repositories | 凯文·德尔戴克

    \n

    这篇文章确实给出了使用此技巧进行代码考古目的的基本原理(仍然不了解具体细节,但我知道这是针对特殊用例的)。

    \n
  8. \n
\n

第 3 项和第 4 项中的链接显然已经过时,并且整个想法显然从未成功(?),但我仍然想知道它是否仍然有好处 - 或者从那时起 Git 的变化消除了它的必要性。

\n
\n

当然,在输入所有这些内容后,我找到了 SO 线程:

\n\n

两者的主题都是“如何重新建立整个历史记录,包括第一次提交? ”。

\n

TTT*_*TTT 5

也许几年前在 1.17.12 版本之前就有一个优势,它添加了--rootrebase 选项。但如今,我想不出任何理由从新存储库的空提交开始。

但是,重新组织现有存储库时仍然可能有一些小优势,例如:

  1. 将现有存储库合并到单一存储库时,您可以从一个存储库开始并合并其他存储库,或者可以从一个空提交开始并将每个存储库合并到该提交,因此从角度来看,第一个父级历史记录被保留新的 monorepo 而不是现有的 repo 之一。它还允许您在合并提交中提供附加信息以引入第一个存储库。
  2. When porting source code from SCMs other than Git, some tools may expect a Git anchor commit to work against, so that the loop can be identical for every new commit, rather than having different logic for the initial commit.