答案 0 :(得分:30)
我们已经发布了这一警告,因为我们已经看到相当多的用户通过各种云端备份存储解决方案(例如Google云端硬盘和Dropbox)破坏了他们的存储库。
问题归结为竞争条件,即Git快速创建和修改文件,存储解决方案试图跟上。在某些情况下,这可能导致文件IO不像Git期望的那样。存储解决方案还可能错误地还原要删除的文件。虽然当您与其他人共享存储库时,最有可能发生这类问题,但我们发现与仅将存储用于备份目的的用户存在问题。
备份Git存储库的最佳方法是尽早提交并经常将更改推送到GitHub,即使您将其推送到正在进行的分支而不是主服务器或其他长期运行的分支。
如果您未使用GitHub或任何其他遥控器并且您的存储库是本地的,我建议您在Google云端硬盘中创建bare repository,然后将存储库克隆到Google云端硬盘以外的位置并从那里工作。每当您进行更改时,您都可以将它们推送到裸存储库。这样,如果Google云端硬盘版本损坏,您就会拥有所有数据的两个副本。
答案 1 :(得分:1)
谷歌硬盘已经搞砸了我的生活两次(是的,我需要看到第二个相信)。
我的解决方案是避免忘记推送到安全的地方我已经创建了一些自动化任务。 您可以创建一个计划任务,每隔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分钟提交并推送你的回购。
希望有所帮助
答案 2 :(得分:0)
(Google云端硬盘文件流用户)
我目前遇到这个问题,发现的解决方案是将git存储库放在一个未同步的硬盘中,然后为GoogleFileStream驱动器中的每个文件夹创建一个镜像文件夹,该文件夹在我每次执行.bat脚本时都会被复制,使用robocopy
命令(Windows)。
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脚本或任务计划程序命令来自动执行此操作。