2016-10-31 1 views
1

Angenommen, wir sind 10 Programmierer für das Projekt und arbeiten mit git. Angenommen, wir möchten nicht das Remote-Internet (Github) -Repository verwenden, und auch kein Remote-Netzwerk-zentriertes Git-Repository.git ohne zentralisiertes Remote-Repository

  • Wie können wir jetzt alle synchronisieren?
  • Jeder muss das Repository anderer Programmierer nacheinander als Remote-Repository deklarieren?
+0

Können Sie keinen * lokalen * Server haben? – Biffen

+0

Ja sicher kann ich. Ich frage dies, um den theoretischen Workflow von Git ohne zentrales Repository zu verstehen – user5157427

+0

Sie können Spiegel einrichten? Ich bin mir nicht sicher, ob ich den Punkt verstehe, warum Sie kein zentrales Repo haben wollen? – hjpotter92

Antwort

1

Wenn Sie keinen dedizierten Server verwenden möchten, gibt es immer die Möglichkeit, eines der lokalen Repositories der Entwickler als "Ursprung" zu verwenden, den jeder andere Entwickler klont.

mit SSH Dies kann leicht getan werden:

  1. einen SSH-Server auf der Ursprung Maschine einrichten.
  2. Geben Sie jedem Entwickler SSH Zugriff auf den Computer (entweder über einzelne Konten oder über ein gemeinsames Konto, z. B. "Entwickler").
  3. Lassen Sie jeden Entwickler das Repository von diesem Computer klonen.

via SSH Klonen kann wie folgt erfolgen:

git clone [email protected]:/full/path/to/repo/.git 

... wo my-Konto das Benutzerkonto ist, und Ursprungs-Maschine ist die Maschine, die den Ursprung Repository enthält .

Jetzt kann jeder Entwickler Änderungen abrufen und übertragen und somit über die Ursprungsmaschine synchronisieren.

In ähnlicher Weise Sie mit mehreren verschiedenen Rechnern synchronisieren können, wenn Sie so wollen, um mehr SSH-Fernbedienungen einrichten, z:

git remote add machine2 [email protected]:/some/other/path/to/repo/.git 
git fetch machine2 
... 
git push machine2 my-new-branch 

... etc.

Allerdings gibt es einen Haken: Standardmäßig können Sie nicht schieben Änderungen an den Zweig, der zur Zeit auf dem entfernten Rechner ausgecheckt ist (git warnt Sie, wenn Sie versuchen, dies zu tun, und ehrlich gesagt Sie do not want to do it anyway) . Daher müssen Sie eine Verzweigungsstrategie entwickeln, die solche Situationen vermeidet (z. B. wenn alle Entwickler an separaten Feature-Zweigen arbeiten statt an einem gemeinsamen Zweig, ist das ein guter Start).

das gesagt ist, würde ich stark empfehlen einen lokalen dedizierten Server mit einem nackten Repository (es ist in der Regel immer online, und Sie haben nicht die Probleme mit ausgecheckt Niederlassungen auf der Entwicklermaschine).Der Server muss nicht schick sein - etwas so einfaches wie ein Raspberry Pi sollte in einem kleinen Team genügen (es gibt ein einfaches Tutorial here).

0

Ich denke, Sie werden den Punkt lesen official reference bekommen. Aus Gründen Ihrer Zeit sollten Sie in Erwägung ziehen, einen Entwickler zu einem Integrationsmanager zu befördern, der sich selbst das Haupt-Repository hält.


Oder einfach wie es ist, Setup ein interner git-Server (Bare-Repository, obwohl ich empfehlen die Verwendung von gitolite), das ist das, was wir bei der Arbeit tun, Backups und solche Sachen dort kostenlos kommen.