1

マシンAにgit リポジトリAがあります(これは、開発チームがホストする「中央」リポジトリのクローンです)。さまざまな理由から、マシンA (貧弱な開発ツール) で開発するのは好きではありませんが、代わりにマシンBで開発したいと考えています。2つはネットワーク(つまり仮想スニーカーネット)を介してファイルを転送することで接続できますが、この質問の範囲外のさまざまな複雑なファイアウォール関連の質問については、ssh、httpなどを使用して直接接続することはできません. リムーバブルドライブ/USBスティックなどをマシンAに接続することもできません。

マシンBにリポジトリのクローンを作成し、そこにあるローカル ブランチでいくつかのコミットを行って開発する簡単な方法はあります? git push/git pullなどを使用してリモートマシンに接続するのではなく、単一のファイルですか? つまり、ある種のデルタ ファイル/パッケージ ファイルなどと同期を保つことはできますか?

を使用して、マシンBgit rebase -iでの変更を 1 つの変更にフラット化し、差分を渡すことを考えましたが、git の履歴を保存したいと思います。

4

3 に答える 3

3

を使用しgit bundleます。

一部のワークフローでは、1 台のマシン上の 1 つ以上の開発ブランチを別のマシンに複製する必要がありますが、2 台のマシンを直接接続することはできないため、対話型の git プロトコル (git、ssh、rsync、http) を使用することはできません。このコマンドは、元のマシンでアーカイブ内のオブジェクトと参照をパッケージ化することで動作する git fetch と git pull のサポートを提供し、アーカイブを何らかの手段 (たとえば、スニーカーネット)で移動した後、 git fetch と git pull を使用してそれらを別のリポジトリにインポートします。. リポジトリ間に直接接続が存在しないため、ユーザーは宛先リポジトリが保持するバンドルのベースを指定する必要があります。バンドルは、ベース内のすべてのオブジェクトが宛先リポジトリにすでにあると想定します。

于 2013-05-08T14:18:16.920 に答える
1

R1 から R2 へのコミットごとに1 つのパッチを生成できます。B

git format-patch master --stdout R1..R2 > big.patch

A次のように適用できます。

git am -3 big.patch
于 2013-05-08T14:10:41.280 に答える
0

私は前にこれをやったことがあります。おそらく最も簡単な方法は、選択したリムーバブル ストレージ デバイスにリポジトリの別のコピーを作成することです。次に、それをリモートとして追加し、両方のマシンで変更をプッシュおよびプルできます。

于 2013-05-08T14:13:59.157 に答える