2010-09-07 18 views
5

zu teilen Ich benutze eine Box als eine gemeinsame Repo, und mein Team verbindet sich über ssh.Richtiger Weg, ein Git Repo über SSH

Was ich tue, ist:

  1. Erstellen Ihnen eine leere git-Repository auf der zentralen Maschine git init

  2. dann von jedem Arbeitsplatz so etwas wie git clone ssh://[email protected]/Users/user/Projects/my-project/.git/

Dieser schönen Werk, aber git schreit mich immer an, wenn ich etwas mache, so etwas:

alt text

Gibt es einen besseren Weg, um ein Repo über ssh geben.

WICHTIG: Ich bin mir bewusst, die Existenz von gitosis und Tools wie das, ich will nichts Besonderes. Teilen Sie einfach ein .git Repo über ssh.

Dank

Antwort

8

Auf der Host-Maschine sollten Sie

git init --bare 

tun, weil Sie die aktuellen Dateien nicht brauchen, nur um die Repo.

Wenn die Warnmeldung einen Repo auf einem ersten Schub ist, und niemand hat es berührt, macht ein

git push -f 

Andernfalls dieser Fehler bedeutet, dass Ihr Zweig Schema nicht korrekt ist. Sie sollten den Zweig Ursprung/Branchname NICHT bearbeiten. Sie mögen Ihre eigene lokale Niederlassung branch genannt, dann, wenn Sie bereit sind, in Ihrem Code zu überprüfen, was Sie tun

git commit 
git pull 
git push 

Und Sie werden von Ihrem lokalen branch zu Herkunft/branch drücken.

bearbeiten

Ich mag würde die Ausgabe dieses Befehls in Ihrem lokalen Repo sehen:

git branch 

Sie sollten nicht das Wort Herkunft oder den Namen Ihres Servers überall in der Ausgabe

sehen
+0

Nein, 'git branch' auf meinem Rechner (nicht das" bare "Repo) ergibt * master –

+0

Gibt es eine Möglichkeit, die zentrale Box jetzt zu reparieren, dass ich das Repo bereits erstellt habe, ohne -are als übergeben ein Argument? : S –

+0

Ihr lokaler Repo sollte alles haben, was der Remote Repo macht. Zieh es runter um sicher zu gehen, dann blase einfach das Repo weg, mache ein nacktes und schieb alles nach oben. – bwawok

3

Zusätzlich zur bwawok-Lösung müssen Sie auf Genehmigungsprobleme achten. Wenn git Dateien im Auftrag eines Benutzers erstellt, werden ihre Berechtigungen standardmäßig von der Umask des Benutzers bezogen, und ihre Gruppe wird auf die Standardgruppe des Benutzers festgelegt. Für gängige Umasks und Standardgruppen wird dadurch ein freigegebener Repo unterbrochen, da solche Dateien von anderen Benutzern nicht geändert werden können.

Glücklicherweise kann Git konfiguriert werden, um in dieser Situation das Richtige zu tun: Schauen Sie sich die --shared Option an git init (oder die core.sharedRepository Einstellung).Die einfachste Option ist wahrscheinlich --shared=group, die allen Benutzern der Gruppe "git" Schreibzugriff gewährt.