Frage Git-Repository-Synchronisierung zwischen Computern, wenn sie sich bewegen?


Nehmen wir an, ich habe einen Desktop-PC und einen Laptop, und manchmal arbeite ich auf dem Desktop und manchmal arbeite ich am Laptop.

Was ist der einfachste Weg, um ein Git-Repository hin und her zu bewegen?

Ich möchte, dass die Git-Repositories identisch sind, damit ich dort weitermachen kann, wo ich am anderen Computer war.

Ich möchte sicherstellen, dass ich die gleichen Zweige und Tags auf beiden Computern habe.

Vielen Dank Johan

Hinweis: Ich weiß, wie man das mit SubVersion macht, aber ich bin gespannt, wie das mit Git funktionieren würde. Wenn es einfacher ist, kann ich einen dritten PC als klassischen Server verwenden, gegen den die beiden PCs synchronisieren können.

Hinweis: Auf beiden Computern wird Linux ausgeführt.


Aktualisieren:

Also versuchen wir XANI: s Idee mit einem blanken Git Repo auf einem Server, und die Push-Befehlssyntax von KingCrunch. In diesem Beispiel gibt es zwei Clients und einen Server.

Lassen Sie uns zuerst den Serverteil erstellen.

ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init

Also versuche ich von einem der anderen Computer eine Kopie des Repos mit Klon zu bekommen:

git clone user@server:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.

Dann gehen Sie in diesen Repo und fügen Sie eine Datei hinzu:

cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master

Jetzt wird der Server mit testfile1.txt aktualisiert.

Wie auch immer, sehen wir, ob wir diese Datei von einem anderen Computer bekommen können.

mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull

Und jetzt können wir das Testfile sehen.

An dieser Stelle können wir es mit mehr Inhalt bearbeiten und den Server erneut aktualisieren.

echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master

Dann gehen wir zurück zum ersten Client und machen einen Git-Pull, um die aktualisierte Datei zu sehen. Und jetzt kann ich mich zwischen den beiden Computern hin und her bewegen, und füge ein drittes hinzu, wenn ich möchte.


76
2018-02-09 17:18


Ursprung


Antworten:


Ich denke, es gibt mehrere Ansätze. Ich werde nur beschreiben, wie ich damit umgehe

Ich habe ein Netbook als 24/7 Server, der mehrere Git-Repositories enthält. Von / nach drücke und ziehe ich Änderungen per SSH. Für den Zugriff von außen benutze ich dyndns.org. Es funktioniert gut, vor allem, weil ich mehr als zwei Systeme habe, die Zugriff auf einige der Repositories benötigt.

Update: Ein kleines Beispiel. Sagen wir, mein Netbook heißt "Netbook". Ich erstelle dort ein Repository

$ ssh username@netbook.local
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare

Auf meinem Desktop werde ich dann einen Klon davon erstellen. Vielleicht werde ich auch einige Dateien hinzufügen

$ git clone username@netbook.local:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master

Auf meinen tragbaren Geräten werde ich (zuerst) dasselbe tun, aber für den Fernzugriff (von außerhalb meines LANs) werde ich auch die externe Adresse hinzufügen.

$ git clone username@netbook.local:/home/username/git/newThing
$ git remote add externalName username@mydyndns.home-ip.org:/home/username/git/newThing
$ git pull externalName master

Es ist nur so wie git (/ git workflows) funktioniert. Sie können so viele entfernte Repositorys hinzufügen, wie Sie möchten. Es spielt keine Rolle, ob zwei oder mehr auf dieselben "physischen" Repositories verweisen. Sie brauchen keinen eigenen lokalen "Server", Sie können jeden öffentlichen Server benutzen, auf den Sie ssh Zugriff haben. Und natürlich brauchen Sie keinen öffentlichen Server, wenn Sie keinen Zugriff von außen benötigen. Das nackte Repository kann sich auch auf dem Desktop-System befinden und Sie können dann ein Arbeitskopie-Repository im lokalen Dateisystem erstellen.

$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master

So gehe ich damit um und für mich funktioniert es ganz gut (wenn nicht perfekt;))

Etwas zu lesen: http://progit.org/ Wirklich gutes Buch.-


23
2018-02-09 17:25



Ich würde das Repo von einer Box zur anderen klonen und dann die beiden Repos einrichten, damit ich es einfach tun kann git fetchvon der anderen Box.

Umbenennen der Fernbedienung von origin Der Name der anderen Box erleichtert das Lesen der entfernten Zweige.

Beachten Sie, dass Sie nur verwenden git fetch (und nicht git push), das funktioniert gut mit nicht-bare-Repositories:

[user@foo repo]$ git fetch -v bar

[user@bar repo]$ git fetch -v foo

6
2018-02-09 18:31



Einfachster Weg: zentrales Repo erstellt mit --bare (also keine ausgecheckten Dateien, nur .git Zeug), oder Github

"Distributed" wird so aussehen:

Konfiguration:

  1. Auf dem Laptop: git remote add desktop ssh://user@desktop/home/user/repo/path
  2. Auf dem Desktop: git remote add laptop ssh://user@laptop/home/user/repo/path

Synchronisierung:

git pull laptop/desktop (Push funktioniert bei nicht-leeren Repos nicht sehr gut, da git ausgecheckte Dateien nicht modifiziert, wenn es zum Remote Repo geht)

Oder machen Sie Repo auf Pendrive;)


4
2018-02-09 22:10



Wie wäre es mit einfach zu verwenden rsync?


1
2018-02-09 17:36



Könnten Sie nicht einfach ein Remote-Repository auf GitHub, BitBucket oder GitLab erstellen? (Die beiden letztgenannten Unternehmen bieten unbegrenzt kostenlose private Repositories an). Wenn Sie den Tag bei der Arbeit beendet haben, verwenden Sie einfach git push um Ihre Änderungen an das Remote-Repo zu übertragen. Wenn du nach Hause kommst, tu es einfach git pull um Ihre Änderungen von der Arbeit auf Ihre Heimmaschine zu ziehen. Ebenso, wenn Sie zu Hause fertig sind, tun Sie git push und dann, wenn Sie zur Arbeit zurückkehren, tun Sie es git pull.


1
2018-03-28 16:43



Nun, Sie können über Git auf den Server, den Sie möglicherweise einrichten könnten, drücken und ziehen. Oder Sie könnten Ihre Repos bei GitHub speichern und diese als Synchronisierungsbrücke verwenden.


0
2018-02-09 17:23



Du könntest das Repository auf jedem deiner Computer machen, wahrscheinlich auf dem Desktop, und es vom Laptop und von ihm selbst drücken / ziehen.


0
2018-02-09 17:26