0

好吧,这里有一个奇怪的!

我有一个漂亮的小 32gig 拇指驱动器,我把它放在我的钱包里,里面包含我在计算机上生活所需的所有最新文件。它包含我所有的 BASH 命令参考,从魔方算法到我用于参考和数字书籍的 PDF 以及我曾经编写过的所有软件。朋友需要一下子修好电脑吗?砰!我用左口袋里的软件把它盖住了。甜吗?

好吧,我想跟踪我对 repo 所做的每一次更改,并对其进行持续备份。Git 在这方面工作得很好,除了它复制了我所有的文件并大幅增加了 repo 的大小!这不是一个真正的大问题,但它很烦人。我知道 Git 用于软件存储库,我对此很满意(这就是我主要使用它的原因)

所以我在想,作为一个 git nub,我能否以某种方式使用 git 记录我对 repo 所做的更改,但不保留每个实际更改的运行副本,而只保留 HEAD 版本?因此,当我执行推/拉操作时,将使用我的所有评论备份存储库,但只有闪存驱动器中活动目录树中的内容会保存在 Git 存储库中?所以不会有重复的二进制条目,如果我删除了一个 .exe 文件,它会记录它但永远摆脱该文件?

也许有更好的方法可以在不使用 git 的情况下做到这一点?例如,我使用 7ZIP 手动压缩和备份,然后将它们保存到云服务器以实现备份冗余。这比简单的:时间密集,更烦人:

git add .
git commit -m "changes"
(git gc)
git push

任何帮助将不胜感激!

4

3 回答 3

3

git-annex做你想做的事。它使用 git-plumbing 进行版本控制,但在索引和存储库中没有副本。

于 2012-12-01T22:44:47.963 回答
1

如果我对您的理解正确,您需要记录被触摸的文件、时间以及更改内容的人工书面描述……但您不想要实际的更改,只需要最新的。

手动编写更改文件(或者可能编写一个小脚本来获取时间戳和更改文件)并使用 rsync 保持文件同步。简单的。

但实际上,您将需要一个完整的更改存储库(如果您现在不想要它,您将在六个月后想要它),而不是在您的闪存驱动器上。我不确定你为什么想要你在闪存驱动器上所做的更改日志,所以我会放弃这个要求。相反,我建议在具有完整 git 存储库和完整备份的真实磁盘上进行开发。然后将文件部署到您的闪存驱动器。有几种方法可以做到这一点。

一种是使用rsync。它真的很擅长并且很容易获得。

或者在您的闪存驱动器上使用git clone --depth 0 <repo>. 这样你仍然可以拉取、区分和提交。你不会有完整的日志,但我不明白你为什么需要它在你的闪存驱动器上。你不能从这个存储库推送,但你仍然可以做一个 diff 来查看本地更改并创建一个补丁文件。无论如何,您不应该在闪存驱动器上进行开发。

于 2012-12-01T23:05:19.233 回答
0

听起来你想要一个集中的源代码控制系统,比如 Subversion。Git 的全部意义在于在本地拥有一个存储库。使用 Subversion,您将拥有一个中央副本,并且在您的拇指驱动器上只携带一个工作副本。

中央副本仍然有完整的历史记录,尽管我认为从 Subversion 中删除旧提交可能比从 Git 中更容易。

于 2012-12-01T22:42:09.847 回答