将.git文件夹移出坚果云文件同步

在使用 Overleaf 写 LaTeX 文档过程中,经常会有想在本地写的需求。同时又想在本地将文档通过坚果云同步到云端,方便我可以不在 Overleaf 上,也能随时切换到别的设备查阅更新后的文档(因为国内 Overleaf 的访问速度太不稳定了)。

以上两点需求,第一点,Overleaf 提供了 git 链接,可以直接通过 git clone 同步到本地。但是如果仅仅把 git clone 下来的整个文件夹直接扔进坚果云的同步文件夹,那隐藏文件夹 .git 中的文件就会被同步到坚果云。并且当你进行 git 操作时,很多赘余的信息会被同步到坚果云当中,由于文件细碎而繁杂,会让坚果云那一直处于校验比对的状态,影响同步效率。

早前有一个很好的解决方案,也就是通过坚果云的选择性同步功能,将 .git 文件夹目录写进 customExtRules.cfg 文件中。但自从坚果云推出令他们团队引以为傲的云桥[1]功能之后,就把选择性同步的功能给取消了。虽然在其后的 4.1.5 版本中短暂地又恢复了选择性同步功能[2],后来还是取消了。

最终,找到了一个虽然崎岖但很好用的解决方案,将 .git 文件夹移出了同步文件夹,同时又能对同步的文件夹进行 git 操作。

解决方案

主要的想法是在把 .git 文件夹移出同步文件夹外的同时,将和云端同步的工作文件夹和 .git 文件夹连接起来。而这样的连接方式的解决方案来自于万能的 Stack Overflow: Can I store the .git folder outside the files I want tracked?[3],在此简要翻译一下核心步骤(针对 git 版本大于等于 1.7.5):

如果是已经存在在本地 repo:

  1. 将 .git 文件夹移动到 /path/to/repo/.git
  2. 在工作文件夹中将

    gitdir: /path/to/repo.git

    写入一个新建的名为 .git 的文件(而不是文件夹!)中,让工作目录可以指向 .git 文件夹

  3. 回到 .git 文件夹所在的目录,通过

    git config core.worktree /path/to/root/of/work/dir

    将 .git 文件夹指向同步到云端的工作目录。

如果想要新建一个 git repo,直接通过

git init --separate-git-dir /path/to/repo.git

便完成连接工作。

阅读已结束,喜欢的话就点个赞吧
注册坚果云网盘
还有其他问题,可以咨询小坚果咨询小坚果
赞(0)
网站部分内容和图片来源于网络如有侵权请联系我们删除:坚果芸 » 将.git文件夹移出坚果云文件同步
分享到: 更多 (0)
将.git文件夹移出坚果云文件同步

本文链接:将.git文件夹移出坚果云文件同步https://content.officeapi.cn/29555.html

坚果云 便捷、安全的网盘产品

免费试用下载客户端