35

Git リポジトリのコンテンツをエクスポートして、ターゲット リポジトリにインポートする必要があります。私はそれを行うための2つの選択肢を知っていますが、それらは私の問題を解決しません

a) ソース リポジトリをリモートとして追加し、ターゲットにマージします。両方のリポジトリが同じネットワーク上にないため、これを使用できません

b) git アーカイブを使用して、コンテンツをターゲットにコピーします。この git アーカイブでは、リビジョン情報が失われています。

バージョン履歴とともにアーカイブを実行し、ターゲットにマージできるようにするものが必要です。これはどのように行うことができますか?

4

4 に答える 4

69

git bundleまさにこの目的のために提供されています。

例:

  1. ソース リポジトリ全体をバンドルする

    git bundle create my_repo.bundle --all

  2. ``my_repo.bundle'' をターゲットのある場所に移動します

  3. ターゲットから、ソース コミット オブジェクトをロードします

    git bundle unbundle my_repo.bundle

    ...その時点から、目的のソースコミットをターゲットリポジトリにマージ/リベース/チェリーピックすることができます。

    それ以外の場合、プルはまったく同じように機能します。

    git pull my_repo.bundle

ファイルがチェックアウトされた状態で保持されないため、バンドルはサイズが小さいため、クローン作成と比較して転送が容易です。

バンドルを使用するその他の理由:

  • clone --bareusing (ファイルをチェックアウトしない) とは異なり、バンドルは単一のファイルとして作成およびパックされるため、追加の圧縮/ターボールは必要ありません。

  • ソース リポジトリ (または .git ディレクトリのみ) を単純に tarball することもできますが、.git/ の下に蓄積された余分なキャッシュとガベージをすべて持ち越すことになります。

于 2012-08-10T06:35:30.393 に答える
2

リポジトリを USB スティック、ラップトップ、またはその他のデータ転送メディアに Git クローンします。それを他のマシンに接続し、メディアをリモートとして追加し、そこから変更をプル/マージします...

リポジトリからのクローンには実際にすべての履歴が含まれているため、問題はクローンを他のマシンにどのように取得できるかということです。

参照:この質問

于 2012-08-09T09:57:44.687 に答える
0

完全なリポジトリ フォルダを zip 圧縮し、それを目的のワークステーションに (USB スティックなどを介して) コピーし、そのローカル リポジトリをリモート リポジトリとして追加するだけです。次に、フェッチしてマージできます。

于 2012-08-09T09:43:54.050 に答える
0

現在のリポジトリのフォークを作成したいと思われます。これが正しいかどうか教えてください: あなたは特定の git リポジトリのクローンを作成したいと考えています。クローンで作業してから、変更を元のリポジトリにマージしますか?

これは、リポジトリのフォークを作成し、変更をコミットするために元のソースから変更をプルすることで行われます。

于 2012-08-09T08:20:34.710 に答える