14

我主要使用Google Drive文件夹,在创建“Google Drive 可能损坏存储库”的新存储库时,在Github Desktop中提到了它。

在此处输入图像描述

具体有哪些问题以及可以采取哪些措施来避免存储库被破坏?

4

3 回答 3

29

我们已经发出警告,因为我们已经看到不少用户的存储库被各种云支持的存储解决方案(如 Google Drive 和 Dropbox)损坏。

问题归结为竞争条件,Git 快速创建和修改文件,存储解决方案试图跟上。在某些情况下,这可能会导致文件 IO 的行为不符合 Git 的预期。存储解决方案也可能错误地还原本应删除的文件。虽然当您与其他人共享存储库时最有可能发生此类问题,但我们已经看到仅将存储用于备份目的的人的问题。

备份 Git 存储库的最佳方法是尽早提交并经常将您的更改推送到 GitHub,即使您将它们推送到正在进行的分支而不是 master 或其他长期运行的分支。

如果您不使用 GitHub 或任何其他远程设备并且您的存储库是本地的,我建议您在 Google Drive 中创建一个裸存储库,然后将您的存储库克隆到 Google Drive 之外的位置并从那里工作。每当您进行更改时,您都可以将它们推送到裸存储库。这样一来,您将拥有所有数据的两份副本,以防 Google Drive 版本损坏。

于 2015-09-02T22:19:51.577 回答
1

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 分钟提交一次并推送一次您的回购。

希望能帮助到你

于 2016-08-10T18:50:33.383 回答
0

(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 脚本或任务调度程序命令自动执行。

于 2020-12-18T00:08:54.683 回答