清除git日志文件

R C*_*R C 7 git logging clear delete-file

我想清除git日志文件,以便命令不git log返回任何内容.这可能吗?这是推荐的吗?

lar*_*sks 14

      ______________________________    . \  | / .
     /                            / \     \ \ / /
    |                            | ==========  - -    WARNING!
     \____________________________\_/     / / \ \
  ______________________________      \  | / | \      THIS WILL DESTROY
 /                            / \     \ \ / /.   .    YOUR REPOSITORY!
|                            | ==========  - -
 \____________________________\_/     / / \ \    /
      ______________________________   / |\  | /  .
     /                            / \     \ \ / /
    |                            | ==========  -  - -
     \____________________________\_/     / / \ \
                                        .  / | \  .
Run Code Online (Sandbox Code Playgroud)

git log显示项目的更改历史记录.如果你真的想要丢弃所有这些历史,你可以......

rm -rf .git
git init
Run Code Online (Sandbox Code Playgroud)

......但是相对较少的情况才真正有意义.

git没有用于生成此输出的任何"git log文件"; 它正在迭代构成项目历史的对象数据库.如果删除这样的.git目录,就不会再回头了:

  • 您将无法从存储库中检索以前版本的文件;
  • 您将无法看到文件随时间的变化情况;
  • 您将无法恢复意外删除的文件.

  • 好的......怎么样? (24认同)
  • 这应该足够清楚了.也许.你永远都不会知道.:P (4认同)
  • 您可能应该在一开始就明确表示这将完全破坏 git 存储库(即粗体文本警告或其他内容)。 (3认同)
  • 嗯,是的,希望这一点非常清楚.或者你错过了警告? (3认同)
  • 我认为这个用例可能是这样的-您克隆了一个示例项目,但是您不想要该项目的历史,因为您打算将其用作支架。因此,删除整个git历史记录并重新启动可能是合乎逻辑的。就是说,我认为这是您唯一想要的*用例。 (2认同)

小智 5

您可能正在寻找:

git reflog expire --expire=now --all
git gc --aggressive --prune=all
Run Code Online (Sandbox Code Playgroud)

第一行将删除所有无法访问的引用日志。第二行将执行许多内务任务,例如压缩文件修订版本和删除无法访问的对象。