16

私は git を半年ほど使用していますが、git を完全に使用しているかどうかはわかりません。

まず、私は Dropbox を試してみましたが、Dropbox はとても便利なので、自分のワークフローに組み込むことができれば非常に素晴らしいと感じています。

  1. 私はデスクトップとラップトップを持っています。どちらにもドロップボックスがあります。
  2. を実行して、ドロップボックス リポジトリを初期化しましたgit init --bare。そして、私のデスクトップのポストコミット スクリプトには、git push --mirror dropbox.

このようにして、デスクトップとドロップボックスは常に完全にミラーリングされます。これは良いことです.

私の本当の質問は、ラップトップをどのようにセットアップすればよいですか? 私はいくつかの提案を聞いています:

  1. デスクトップからプルして、ラップトップの原点がデスクトップになるようにします。
  2. 私のラップトップの原点がドロップボックスになるように、ドロップボックスから直接プルします。

私は2番目のことをしてきましたが、正しいことをしているかどうかわかりません。私のワークフローは次のとおりです。

  1. ラップトップを使用するたびに、git pull を実行します (ラップトップの起源はドロップボックスであり、ドロップボックス自体が更新されるため)。
  2. 次に、ドロップボックスからローカル ブランチにブランチをチェックアウトします。
  3. 仕事が終わったらコミットします。
  4. これは私が混乱しているところです: --mirror をドロップボックスリポジトリ (ラップトップの元のリポジトリ) にもプッシュする必要がありますか? この分野でいくつかの問題が発生しています: ドロップボックスがうまく同期しないことがあります。

現在、ラップトップで実行したgit branch -r後にデスクトップで実行しても、最近のラップトップのコミットは表示されません。誰かが理由を教えてもらえますか?git push --mirror origin

いつでもプルを初期化でき、同期が完了したことを 100% 確信できるため、デスクトップから直接プルすることについて言及しました。ドロップボックスでは、アップデートがドロップボックス サーバーにプッシュされたかどうかを 100% 確信することはできません

4

1 に答える 1

22

中間リポジトリ コンテナーを追加する場合は、Dropbox を使用すると問題ありません。

  1. git bundle形式を使用します: 1 つのファイルのみで裸のレポを生成します (つまり、Dropbox はそれをコンピューターのいずれかに正しく同期する可能性が高くなります:不明な「構造全体」ではなく、1 つのファイルをコピーするだけです。あなたはすべてを取り戻すでしょう)。

  2. 保存ごとに増分バンドルを使用しています (繰り返しますが、保存ごとに 1 つのファイルであり、反対側から簡単にプルして、完了したものを取り戻すことができます)。
    ソース (ラップトップまたはデスクトップ) と日付にちなんで、インクリメントに名前を付けます。
    基本的に、まだプルしていない xxx.bundle からプルします。

  3. すべての中間増分バンドルを定期的にクリーンアップし、最新のソースからの完全なバンドルに置き換えます

そのモデルは以下を可能にします:

  • 単純な同期プロセス(1 つまたは非常に少数のファイル)
  • クイック保存プロセス(増分バンドルを使用)
  • スケーリング: 複数のアクターがいる場合、つまり複数の人が同じブランチを更新している場合、別のリモート名を使用してバンドルを参照することで、プルするときにアクターの貢献を分離できます (各バンドルは、引く)。
于 2010-09-03T05:53:22.433 に答える