我主要使用Google Drive文件夹,在创建“Google Drive 可能损坏存储库”的新存储库时,在Github Desktop中提到了它。
具体有哪些问题以及可以采取哪些措施来避免存储库被破坏?
我主要使用Google Drive文件夹,在创建“Google Drive 可能损坏存储库”的新存储库时,在Github Desktop中提到了它。
具体有哪些问题以及可以采取哪些措施来避免存储库被破坏?
我们已经发出警告,因为我们已经看到不少用户的存储库被各种云支持的存储解决方案(如 Google Drive 和 Dropbox)损坏。
问题归结为竞争条件,Git 快速创建和修改文件,存储解决方案试图跟上。在某些情况下,这可能会导致文件 IO 的行为不符合 Git 的预期。存储解决方案也可能错误地还原本应删除的文件。虽然当您与其他人共享存储库时最有可能发生此类问题,但我们已经看到仅将存储用于备份目的的人的问题。
备份 Git 存储库的最佳方法是尽早提交并经常将您的更改推送到 GitHub,即使您将它们推送到正在进行的分支而不是 master 或其他长期运行的分支。
如果您不使用 GitHub 或任何其他远程设备并且您的存储库是本地的,我建议您在 Google Drive 中创建一个裸存储库,然后将您的存储库克隆到 Google Drive 之外的位置并从那里工作。每当您进行更改时,您都可以将它们推送到裸存储库。这样一来,您将拥有所有数据的两份副本,以防 Google Drive 版本损坏。
Google Drive 已经两次搞砸了我的生活(是的,我需要看到第二次才能相信)。
我的解决方案是避免忘记推送到安全的地方,我创建了一些自动化任务。您可以创建一个计划任务,以每隔 X 小时/天...等提交和推送您的更改。例如,一个进行中的分支。使用基于 Unix 的系统 (Mac / Linux),您可以使用 crontab。
首先创建一个bash脚本,即:/home/myScripts/autoGit.sh
# add and commit changes
cd /home/myProject && /home/myGit commit -a -m "automated commit/push `date`"
# push git server
cd /home/myProject && /home/myGit push origin wip
然后根据需要创建 crontab 作业:
crontab -e
然后将命令添加到文件中
mailto: your@email.com
59 * * * 1,2,3,4,5 /home/myScripts/autoGit.sh
这将在周一、周二、周三、周四、周五每 59 分钟提交一次并推送一次您的回购。
希望能帮助到你
(Google Drive File Stream 用户)
我目前遇到了这个问题,我找到的解决方案是将我的 git 存储库放在一个非同步的硬盘中,然后在 GoogleFileStream Drive 中为每个存储库创建一个镜像文件夹,每个文件夹都会被复制当我使用robocopy
命令(Windows)执行 .bat 脚本时。
robocopy "\\Git\to\repo1\nonsynced" "\\Mirror\target\git\repo1\to\sync" /E /MIR
robocopy "\\Git\to\repo2\nonsynced" "\\Mirror\target\git\repo2\to\sync" /E /MIR
我像往常一样执行提交和推送,并运行脚本以与驱动器同步。这可以通过 FolderMonitor 脚本或任务调度程序命令自动执行。