2016-06-27 13 views
0

ゲストにLinuxを実行しているWindowsホストに仮想マシン(バーチャルボックス)があります。 私はネットワーク上の場所にあるように、Sambaにファイル共有を設定してクライアント上でgit repoを持っています。 WindowsホストからSourceTreeをgitクライアントとして実行して、VMのレポに影響を与えます。Linux仮想マシンでgitの破損を防ぐにはどうすればよいですか?

問題は、たまに、ゲストのgitオブジェクトが壊れてしまうことです。私はすでにそれが壊れた後にgit repoを修正する方法を見つけました(そして見つけ出す)。私はそれを固定し、それは動作します。問題は、修正プログラムが私のコミットされていない変更を削除するので、毎回バックアップする必要があるということです。

可能であれば、どうすればこれらのgitオブジェクトの破損を防ぐことができますか?

注意点: VMを強制的にシャットダウンしません。 ソースツリーで自動リフレッシュをオフにしてみました。 私は、すべての作業セッションの終わりにgitファイルをバックアップし、そのような進捗状況を失うのを避けることができますが、それは迷惑なことだと認識しています。

私は任意の提案に開放されています。

答えて

1

同じリポジトリにある2つの異なるgit実行ファイル(Windows用とLinux用)を使用することは悪い考えです。

Gitは設計上、分散VCSなので、それを利用することができます。あなたのWindowsファイルシステムにはリポジトリのクローンが1つあり、Linux VMには1つのクローンしかありません。あなたの仕事をプッシュし、他のレポから仕事を引き出すことができるあなたのLinux VMに裸のレポ(git init --bare)を持ってください。 Windowsホストのsshを使用して、sambaではなく変更をプッシュします。 2つの非裸のリポジトリ間を直接プッシュすることは可能ですが、推奨されません(たとえば、裸のレポジトリの現在のブランチにプッシュすることはできません)。

万が一、Webベースのgitサービス(GitHub、gogs、GitLab、...)にアクセスできる場合は、プッシュとプルにも使用できます。

+0

私は2つの異なるgit実行ファイルで作業していません。 bitbucketでリポジトリを読むことができないため、変更するたびにコミットしたりプッシュしたりすることができません。 – Silviu

+0

なぜあなたのレポがVM内にあるのですか? – flyx

+0

セットアップが奇妙ですが、ホスト上にファイルを置くのではなく、ホストからその環境で開発を行っています。とにかく、ホストのSourceTreeを使用してゲストのgit repoを管理していると私は考えていると思います。 – Silviu

関連する問題