たとえば、2台のコンピューターにオリジンリポジトリのクローンを作成しました。次に、先に進んでいくつかの変更を加え、コンピューターAのローカルリポジトリにコミットします。これらの変更をコンピューターBにプルするにはどうすればよいですか?コンピューターAとBの両方がネットワークに接続されています。
私が探しているのは、誰かが手動でパッチを作成して私に送信するのと同じです。これは、作業中のコピー/ローカルリポジトリに適用できます。
プル元のマシンにを介してアクセスできるssh
場合は、リポジトリをsshを介してリモートとして追加し、他のリモートと同じようにそこからプルできます。
$ git remote add repo_b username@host:path/to/repository.git
$ git pull repo_b master
git pull
(リモートを追加する手順をスキップして、リモート名の代わりにコマンドで完全なURLを指定することもできますが、定期的にリポジトリからプルする場合は、リモートとして追加することで節約できます。たくさんのタイピング。)
見てgit pull --help
これは次のようなものになりますgit pull /my/other/repository
gitdaemonを使用して実際のサーバーをセットアップできます。それ以外の場合は、git bundlegit pull
を使用できます。これは、gitの内部表現を、もう一方の端でバンドル解除できるファイルにバンドルします。
たとえば、git docsから、すべてをバンドルします。
git bundle create file.bundle master
次に、もう一方の端で、次のようなことを行うことができます。
git pull file.bundle HEAD
sshでコンピューターBに接続できる場合は、次を使用できます。
git clone user@host:/path/to/repo
これにより、このssh接続を介したリモート追跡が可能になり、git pull/pushを使用できるようになります。
別のコンピューターを使用するローカルリポジトリでは、次のように機能しました。
git remote add origin_username username@10.0.0.2:/home/username/dev/project/main/.git/
git pull origin_username master
また
git pull origin_username some_branch
少し遅すぎますが、Antoine Pelisseの答えを拡張するために、構成にリモートを追加せずに、同じリポジトリにいくつかのコミットが含まれているsshホストからプルすることもできます。
git pull user@host:/path/to/repo # while in the local repo folder
明確にするために、これの考えられる使用法の1つは、リモートから同じリポジトリのクローンを作成した2つのホスト(AとB)があり、ホストAでいくつかの変更をコミットし、それらをリモートにプッシュしたくない場合です。(まだ)しかし、代わりにホストBからそれらのコミットをプルしたい。上記のコマンドは、リモートにプッシュせずにリポジトリを同期します。
私は思いついた
git clone /path/to/local/repository