私たちは2つのgitリポジトリa
とb
を持っています。どちらもローカルリポジトリです。どうすればいいですかプッシュレポb
レポa
とレポa
レポb
?私がこれまで試したどのようなローカルのgitリポジトリに安全にプッシュする方法は?
# remove and create new '/tmp/repos'
rm -rf /tmp/repos
mkdir -p /tmp/repos
# create (init) and config repo 'a'
git init /tmp/repos/a
git -C /tmp/repos/a config user.email "[email protected]"
git -C /tmp/repos/a config user.name "name_a"
# clone and config repo 'a' to repo 'b'
git clone /tmp/repos/a /tmp/repos/b
git -C /tmp/repos/b config user.email "[email protected]"
git -C /tmp/repos/b config user.name "name_b"
# create file './text.txt' in repo 'b', add it, and commit it
echo "first line" > /tmp/repos/b/test.txt
git -C /tmp/repos/b add ./test.txt
git -C /tmp/repos/b commit ./test.txt -m "add first line"
は、裸のリポジトリとしてa
を設定b
からa
にプッシュし、非裸のリポジトリにa
をリセットすることです:
git -C /tmp/repos/a config --bool core.bare true
git -C /tmp/repos/b push origin master
git -C /tmp/repos/a config --bool core.bare false
しかし、これではありません両方のリポジトリに作業ディレクトリが必要であり、他のリポジトリのステータスに依存できないため、ソリューションです。
repo b
からrepo a
(またはこれと同等のもの)にプッシュします。私はrepoをからrepo a
に引き出すことができることを認識しています。しかし、これはではなく、です。
git -C /tmp/repos/a pull /tmp/repos/b
Btw、現在のところ、仲介のローカルレポc
を使用しています。 このような第3の(共通の)リポジトリを避ける方法を探しています。 中央リポジトリのない実際の種類の分散。 共通リポジトリの使用は安全で堅牢でシンプルであると私は理解しています。 私が興味を持っているのは、それがなくてもどういうふうに動作するのかを理解し、作業ツリーを持つ2つのリポジトリが直接通信するときにどこに問題があるのかを知ることです。 言い換えれば、安全で丈夫でシンプルでない場合、私は本当にその理由を正確に理解したいと思います。
gitサブモジュールのようなものを意味しますか? https://git-scm.com/book/en/v2/Git-Tools-Submodules – McLemore
あなたは何をしようとしていますか?なぜ両方のリポジトリに作業ツリーが必要ですか?あなたはそれらをお互いに結びつけることを考慮すべきですか? – eis
@McLemore:正確ではありません。 AFIKサブモジュールは対称的な方法で動作するようには意図されていません。つまりAのサブモジュールであるBとBのサブモジュールとしてAを使用します。 – wolfrevo