gpt4 book ai didi

git - 像这样使用git有什么问题吗?

转载 作者:太空狗 更新时间:2023-10-29 13:49:20 25 4
gpt4 key购买 nike

这是我的情况。我在笔记本电脑和服务器上都保存了一组文件。我已经使用 rsync 在两个位置之间进行了同步设置。最近我决定对这些文件的一部分进行源代码管理。为此,我正在使用 git

所以我有 shared/,我使用 rsync 同步它。然后我有 shared/stuff/ 受 git 控制。我将从本地存储库的两个位置使用 git。我一次只处理一个副本,而且我总是来回同步文件。

我是唯一处理这些文件的人,这两个位置是这些文件唯一存在的地方。我拥有 git 的唯一原因是因为就在今天,我不小心删除了一些代码,而且无法恢复。

所以我真正的问题是:rsync 会做任何会破坏 git 的事情吗?还是相反?

编辑:对于那些好奇的人,我使用 rsync 而不是 git 进行同步的原因是因为我已经有一个很好的系统来保持共享/文件夹同步,并且想在其中保留 git 存储库。

最佳答案

没有错。

请记住 git 对象:提交、树和 blob 是不可变的,因此 git 对象存储就像一个日志,您只向其中写入新对象而不删除任何内容,即使您“重写历史记录”也是如此。在 git gc 之前,您不会停止世界并进行修剪。 Git 使丢失数据变得困难。


如果您的存储库非常大,并且您重新打包它,rsync 必须再次传输整个对象数据库,因为 git 将所有内容打包到一个新的大包文件中。如果你想重新打包,你可以使用 git repack 而不是为新对象创建新包而不触及旧对象。或者你可以重新打包一次,并标记大包文件以保留:

如果你有一个名为 .git/objects/pack-fe017c0e9ea12841cd29458df7bd4421c2b12458.pack 的包文件,只需在它旁边创建一个名为 .keep 的文件:

touch .git/objects/pack-fe017c0e9ea12841cd29458df7bd4421c2b12458.keep

现在,git gc 不会重写那个包文件,但它会把所有其他小包和对象收集在一起。 git repack 的不同之处在于,您不会构建大量小包文件的集合。

关于git - 像这样使用git有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1619562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com