如何使用BFG从git历史记录中永久删除文件夹

马托

我正在使用BFG删除我的两个文件夹。从回购协议开始就对其进行了跟踪。删除的原因是那些文件夹包含我们不再需要的二进制文件和其他txt文件。但是,当我尝试删除这两个文件夹时,其中一个被删除,但另一个仍在徘徊。

我创建了虚拟仓库,并做了一些提交来重新创建问题。我假设myRepo.git是干净的仓库。

我用来删除文件夹的功能是: java -jar bfg-1.13.0.jar --no-blob-protection --delete-folders "{system1, system2}" myRepo.git

#!/bin/bash


BUILD(){
  git clone https://github.com/xxxx/myRepo.git
  cd myRepo
  echo "Jpt test1" > jpt1.txt
  echo "Jpt test2" > jpt2.txt
  echo "Jpt test3" > jpt3.txt

  git add jpt1.txt jpt2.txt jpt3.txt
  git commit -m "first commit"
  git push origin master
  ######
  mkdir system1
  cd system1
  mkfile 14m outputfile1.out
  mkfile 14m outputfile2.out
  echo "Jpt test1" > sysjpt1.txt
  echo "Jpt test2" > sysjpt2.txt
  echo "Jpt test3" > sysjpt3.txt
  cd ..
  ######
  mkdir system2
  cd system2
  mkfile 14m outputfile1.out
  mkfile 14m outputfile2.out
  cd ..

  git add system1 system2
  git commit -m "tracking large file"
  git push origin master
  cd ..

  ##### Call function BFG which does BFG stuff. 
  BFG

}

BFG(){
  # run bfg and let git clean history 

  git clone --mirror https://github.com/xxxx/myRepo.git

  java -jar bfg-1.13.0.jar --no-blob-protection --delete-folders "{system1, system2}" myRepo.git 

  cd myRepo.git
  git reflog expire --expire=now --all && git gc --prune=now --aggressive
  git push 

  cd ..
  mkdir test_new
  cd test_new
  git clone https://github.com/xxx/myRepo.git
  cd myRepo
  ls


}

BUILD

当我清洁后克隆并对其进行ls处理时。我懂了jpt1.txt jpt2.txt jpt3.txt system2查看system2文件夹如何仍然存在。

乔亚尼斯

正如您根据上面评论中我的建议进行测试时,问题出在"{system1, system2}"处理该表达式时,它会将其扩展为,"system1"" system2",在其前面system2,没有您想要的空间。

您可以使用两个命令来运行该过程,一次使用system1一次,一次使用一次,system2,或者简单地删除空间,一切都会正常进行。

有趣的是,的扩展{a,b}似乎是由bfg本身完成的,而不是由bash完成的:引号告诉bash从字面上传递该字符串,因此,尽管它看起来像bash语法,但实际上不是bash扩展。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 git 历史记录中永久删除文件

如何从CVS历史记录中永久删除文件

从git历史记录中删除已删除的文件夹

从Git历史记录中删除文件夹内容(一组文件除外)

从git历史记录中删除文件夹以减小存储库大小

从git历史记录中删除除某些文件夹以外的所有文件夹

如何从Git历史记录中删除文件?

如何从git历史记录中删除“太大”文件?

GIT重命名文件夹历史记录

查看文件夹的git历史记录

Git:从历史记录中删除文件夹,只有一位作者除外

在git存储库中,如何在不丢失Git历史记录的情况下删除旧的已重命名的“大写”文件夹

将文件以及git中的历史记录移动到其他文件夹

如何删除文件夹及其所有历史记录

如何获取整个git历史记录的文件夹大小

如何git将文件夹和文件移动到新文件夹并保留历史记录?

如何清除文件历史记录中的“备份这些文件夹”列表?

使用BFG清理git历史记录

Git-从分支的历史记录中删除文件

从所有git历史记录中删除文件

从 git 历史记录中删除文件的某些内容

从Git历史记录中删除大文件

从GIT历史记录中删除文件

缺少删除文件历史记录中的行 (git)

如何从Git存储库中的提交历史记录中删除/删除大文件?

如何从git存储库中删除文件,但仅删除历史记录中的某个点?

删除并在另一个文件夹中重新创建后,保留文件的Git历史记录

如何在不提交更改的情况下从git历史记录中删除文件?

Git:如何在项目提交历史记录中查找已删除的文件?