私は主にGoogle ドライブフォルダで作業していますが、新しいリポジトリを作成するときにGithub デスクトップに「Google ドライブはリポジトリを破損する可能性がある」と記載されています。
具体的にはどのような問題があり、リポジトリが破損しないようにするにはどうすればよいですか?
私は主にGoogle ドライブフォルダで作業していますが、新しいリポジトリを作成するときにGithub デスクトップに「Google ドライブはリポジトリを破損する可能性がある」と記載されています。
具体的にはどのような問題があり、リポジトリが破損しないようにするにはどうすればよいですか?
Google Drive や Dropbox などのさまざまなクラウド ベースのストレージ ソリューションによって、かなりの数のユーザーがリポジトリを破損しているのを確認したため、この警告を配置しました。
この問題は、Git がファイルを迅速に作成および変更し、ストレージ ソリューションがそれに追いつこうとする競合状態に要約されます。一部のシナリオでは、これによりファイル IO が Git の期待どおりに動作しない可能性があります。ストレージ ソリューションは、削除されるはずのファイルを誤って復元することもあります。この種の問題は、他のユーザーとリポジトリを共有している場合に発生する可能性が最も高くなりますが、バックアップ目的でのみストレージを使用するユーザーに問題が見られます。
Git リポジトリをバックアップする最善の方法は、マスター ブランチやその他の長期実行ブランチではなく、作業中のブランチに変更をプッシュする場合でも、早期に頻繁にコミットし、頻繁に GitHub に変更をプッシュすることです。
GitHub やその他のリモートを使用しておらず、リポジトリがローカルにある場合は、Google ドライブ内にベア リポジトリを作成し、そのリポジトリを Google ドライブ外の場所にクローンして、そこから作業することをお勧めします。変更を加えたときはいつでも、それらを裸のリポジトリにプッシュできます。そうすれば、Google ドライブのバージョンが破損した場合に備えて、すべてのデータのコピーを 2 つ持つことができます。
Google ドライブは、私の人生を 2 回台無しにしました (そうです、信じるには 2 回目を見る必要がありました)。
安全な場所へのプッシュを忘れないようにするための私の解決策 いくつかの自動化されたタスクを作成しました。X時間/日ごとに変更をコミットしてプッシュするスケジュールされたタスクを作成できます...など。たとえば、1 つの進行中のブランチに。Unix ベースのシステム (Mac / Linux) を使用すると、crontab を使用できます。
最初に 1 つの 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 ドライブ ファイル ストリーム ユーザー)
私は現在この問題を抱えています。私が見つけた解決策は、git リポジトリを同期されていないハードディスクに置き、GoogleFileStream ドライブ内に各リポジトリのミラー フォルダを作成することでした。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 スクリプトまたはタスク スケジューラ コマンドを使用して自動化できます。