Wir haben zwei Git-Repositories a
und b
. Beides sind lokale Repositories. Wie kann ich Push Repo b
zu Repo a
und Repo a
zu Repo b
?Wie kann ich sicher zu einem lokalen Git-Repository gelangen?
# 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"
Was ich bisher versucht habe, ist a
als bloße Repository zu setzen, drücken Sie b
-a
, und setzen a
auf eine nicht-bare Repository:
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
Aber das ist nicht eine Lösung, da beide Repositories ein Arbeitsverzeichnis haben müssen und wir nicht vom Status des anderen Repositorys abhängig sein können.
Bitte beachten Sie, dass ich Push aus Repo wollen b
a
(oder etwas Gleichwertiges) Repo. Ich bin mir bewusst, dass ich Repo b
von Repo a
ziehen kann. Aber das ist nicht was ich brauche.
git -C /tmp/repos/a pull /tmp/repos/b
Btw, derzeit verwenden wir einen Vermittler lokalen Repo c
. Wir suchen nach einer Möglichkeit, ein solches (gemeinsames) Repository zu vermeiden. Art von Real ohne ein zentrales Repository verteilt. Ich verstehe die Verwendung des gemeinsamen Repository ist sicher, robust und einfach. Was mich interessiert ist zu verstehen, wie es ohne es funktionieren könnte, und lernen, wo die Probleme sind, wenn zwei Repositories mit funktionierenden Bäumen direkt kommunizieren. Mit anderen Worten: Wenn es nicht sicher, robust und einfach ist, würde ich gerne genau verstehen, warum.
Meinst du sowas wie ein Git Submodul? https://git-scm.com/book/de/v2/Git-Tools-Submodules – McLemore
was versuchst du zu tun? Warum müssen beide Repositories einen Arbeitsbaum haben?sollten Sie in Erwägung ziehen, sie zueinander zu rsyncing? – eis
@McLemore: Nicht genau. AFIK Submodule sollen nicht symmetrisch arbeiten. d.h. A als Untermodul von B und B als Untermodul von A. – wolfrevo