清空Git日志文件

13

我想清除git日志文件,这样命令git log就不会返回任何东西。这个操作可行吗?这个建议会带来什么影响?


1
为什么销毁您的历史记录是期望的结果? - wadesworld
1
日志是版本控制的重点。 - lanzz
你想要删除所有提交记录还是只删除提交信息? - Fatih Arslan
如果要执行此操作,您需要输入 rm -rf .git,然后输入 git init 和 git add --all。 - dead
3个回答

25
      ______________________________    . \  | / .
     /                            / \     \ \ / /
    |                            | ==========  - -    WARNING!
     \____________________________\_/     / / \ \
  ______________________________      \  | / | \      THIS WILL DESTROY
 /                            / \     \ \ / /.   .    YOUR REPOSITORY!
|                            | ==========  - -
 \____________________________\_/     / / \ \    /
      ______________________________   / |\  | /  .
     /                            / \     \ \ / /
    |                            | ==========  -  - -
     \____________________________\_/     / / \ \
                                        .  / | \  .

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

rm -rf .git
git init

...但只有相对较少的情况下这样做才是有意义的。

没有什么"git日志文件"用于生成该输出;它正在迭代组成项目历史记录的对象数据库。如果像这样删除.git目录,就无法恢复:

  • 您将无法从存储库中检索以前版本的文件;
  • 您将无法查看文件如何随时间改变;
  • 您将无法恢复意外删除的文件。

2
最好在开始时更明确地说明这将完全摧毁git存储库(例如,粗体文本警告或其他形式的提醒)。 - vergenzt
也许他只想摆脱注释?删除 .git 不是解决方案,可能有多个分支、远程等...你的解决方案会把它们全都毁了。 - Fatih Arslan
4
好的,希望这非常明显。或者你忘记了警告? - larsks
5
我认为这个用例可能是这样的——你克隆了一个示例项目,但你不想要该项目的历史记录,因为你打算将其用作脚手架。因此,删除整个 git 历史记录并重新开始可能是合理的。话虽如此,我认为这是唯一需要这样做的用例。 - user677526

5
您可能正在寻找以下内容:
git reflog expire --expire=now --all
git gc --aggressive --prune=all

第一行将修剪所有不可达的引用日志。第二行将执行许多清理任务,例如压缩文件修订版本并删除不可达对象。

看起来这只清除了本地副本中的条目;如果您进行全新的 git 克隆,这些条目仍将存在。 - user5359531
我做了这个操作,但是git log的输出看起来没有变化。我错过了什么吗? - Gabe
@Gabe 这两个命令不会改变 git log 的输出,因为它们不会触及到可达的提交。这两个命令将导致存储库变小。可以在Unix系统上使用 du -sh .git 来验证。 - Alex de Kruijff

0

基本上你想做的是删除包含日志的文件,即你的“.git”文件。

  1. rm -rf .git // 这意味着递归地删除git文件。
  2. git init // 这将使该文件夹再次成为git repo。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接