我可以用git进行递减备份吗?如果不是,您知道用于此的工具吗?

问题描述 投票:0回答:2

我的问题也许不寻常,让我解释一下,

  • 我对放在主机上的一个非常大的文件夹(20go)进行了git的第一个git版本控制。
  • 我减小了此文件夹的大小(没有用的数据),并且做了第二个版本。
  • 问题是,git保留在第一个版本的内存中,因此.git /文件夹非常繁重。
  • 我不再需要第一个版本。

我想git做增量备份,所以如果我找到删除第一个版本的方法,它将在第二个版本中丢失很多东西,几乎所有内容...

对我来说,更简单的方法是只删除.git /文件夹并创建一个新文件夹,但是仍然很繁琐(从20go到13go),并且花了我几个小时来保存。

所以这是我的问题:

?您知道我们是否可以使用git进行“递减”备份或“综合完整备份差异”备份,如果不能,您是否知道可以使用的工具?

谢谢

PS:我在git上看到了这个解决方案:

  • git checkout --orphan Latest_branch
  • git add -A
  • git commit -am“ commit message”
  • git branch -D master
  • git branch -m主站
  • git push -f原始主机

它清除了git repo中的日志历史记录,但实际上不是数据的历史记录,因此不是解决方案。

git backup decrement
2个回答
1
投票

Git不执行«增量备份”。它确实«提交»。提交通常由一个哈希(将其视为地址)组成,该哈希使您可以检索其他内容,

  • 先前的提交地址(哈希)
  • 提交作者
  • 提交时的树

最后一个通常是最有趣的,因为树有效地描述了整个目录/文件层次结构通过使用相同的hash-> content系统! (实际上,git被描述为建立在可寻址内容的文件系统之上的VCS。此外,当树中的文件没有不同时,git节省了一些空间(我相信),因为它们的地址相同,因此仅需要git数据库中的一个对象。)

这对您意味着什么

  1. 停止将git用作备份软件;它是版本控制软件,并且至少了解部分基础模型会带给您很多帮助。 @torek为此写了很多SO答案,并且有一些很好的演讲。
  2. 删除历史记录意味着创建一个全新的提交,该提交指向与以前不同的提交。

我可以想到几种不同的方法来实现(2)。第一个是git rebase -i @~2(假设您只有两个提交),然后像在重新配置配方中一样删除第一个。这告诉git重写历史记录,但是跳过第一次提交。我希望这会失败,但是我愿意错了。

另一个选择是git filter-branch,并且有数百个Internet页面介绍了如何使用它从整个历史记录中删除某些文件。

之后,git gc应该有助于节省一些空间,但是只有在确定一切都可以完成之后,才可以这样做。


0
投票

感谢您的回答。我没有找到方法,所以我只是选择擦除并重新创建我的仓库。

© www.soinside.com 2019 - 2024. All rights reserved.