关于百度云等网盘不能同步.git文件夹的解决方法

起因是想要把git仓库同步到百度云上,发现.git文件夹不能上传,取消了.git文件夹的隐藏属性,依然无法同步。

这里提供一个解决该方法的思路,供大家参考。


首先,在百度云设定的文件夹下新建一个文件夹“REPO“,然后进入该文件夹,”git init --bare"在该文件夹下初始化repo,记得一定要--bare,这是就会创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”)。该REPO文件夹是作为远端仓库来使用的,只记录历史信息。操作如下图所示。


此时,REPO文件夹下的情况如下图所示,REPO里的文件就是.git文件夹内的文件阿!!



之后,回到百度云文件夹下,再新建一个目录working作为工作目录,进入working之后,“git clone ../REPO/",没错,就是从REPO文件夹clone到working文件夹下,这时候working文件夹下回出现REPO文件夹,进入working/REPO文件夹,此时会发现这里和平时直接git init的情况是一样的,包含了.git 隐藏文件。由于此时还没有文件加入,所以只有.git。操作见下图。


这时候,我们再去working/REPO文件夹下去看看,如下图所示,看出门路来了吧,working文件夹相当于从REPO clone下来了版本信息,也就是working/REPO是工作目录,REPO是远端仓库,在working/REPO下的任何git操作,都可以通过git push到远端的REPO,而远端的REPO是可以上传同步的!!!



到这一步也就差不多了,你就可以在working/REPO下随意添加文件,然后进行git操作,只要你最后git push上去,哈哈,那就会把版本信息保存在刚开始的那个REPO文件夹下了。

所以,如果你换了台电脑。没问题,还是进入working/REPO文件夹,然后先"git fetch origin"把版本信息重新fetch到工作目录下(之所以要这一步,是因为新电脑的working/REPO/.git并没有同步,所以你可以依赖于git fetch来进行同步)

这就是该方法的关键所在,利用远端的裸仓库不含.git,所以能够同步到百度云,同时又通过重新的fetch,从裸仓库(已同步)重新把最新的版本信息下下来,完成了同步云的git同步问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值