簡単に言うと、 git リポジトリをリモート リポジトリのリスト (単一の「オリジン」ではなく) にプッシュしたり、そこからプルしたりする方法はありますか?
長文:異なる接続環境を持つ複数のコンピューターでアプリを開発している状況がよくあります。たとえば、移動中はラップトップ、特定の場所にいるときはコンピューター「A」、別の場所にいるときは別のコンピューター「B」などです。また、ラップトップは「A」または「B」のいずれか一方のみに接続できる場合もあれば、両方に接続できる場合もあります。
私が望んでいるのは、git が常に現在接続できるすべてのコンピューターから「プル」し、そのコンピューターに「プッシュ」して、あるマシンから別のマシンにジャンプしてシームレスに作業を継続することが容易になることです。
ベストアンサー1
の最新バージョンでは、これを手動で行う必要はなくなりましたgit
。マルバニアスの解決策、下に。
ここに転載:
git remote set-url origin --push --add <a remote>
git remote set-url origin --push --add <another remote>
元の回答:
これは私が長い間使ってきたもので、悪い結果もなく、Linus Torvaldsが提案したものです。git メーリングリスト。
araqnidのソリューションは、コードをリポジトリに取り込むのに適していますが、私のように同等の権威あるアップストリームが複数ある場合 (重要なプロジェクトの一部をプライベート アップストリーム、GitHub、Codaset の両方にクローンしています)、毎日それぞれに変更をプッシュするのは面倒です。
簡単に言うと、git remote add
すべてのリモートを個別に…そしてgit config -e
マージされたリモートを追加します。次のリポジトリがあると仮定しますconfig
。
[remote "GitHub"]
url = [email protected]:elliottcable/Paws.o.git
fetch = +refs/heads/*:refs/remotes/GitHub/*
[branch "Master"]
remote = GitHub
merge = refs/heads/Master
[remote "Codaset"]
url = [email protected]:elliottcable/paws-o.git
fetch = +refs/heads/*:refs/remotes/Codaset/*
[remote "Paws"]
url = [email protected]:Paws/Paws.o.git
fetch = +refs/heads/*:refs/remotes/Paws/*
"Paws"
…とのマージされたリモートを作成するには"Codaset"
、これらすべての後に以下を追加します。
[remote "Origin"]
url = [email protected]:Paws/Paws.o.git
url = [email protected]:elliottcable/paws-o.git
これを実行すると、 を実行すると、 とのgit push Origin Master
両方に順番にプッシュされるので、作業が少し楽になります。Paws/Master
Codaset/Master