Wie richte ich einen eigenen GIT-Server ein? Was sind nackte / nicht nackte Repos?


10

Ich versuche einen einfachen GIT-Server einzurichten. Ich habe Ubuntu auf einem virtuellen PC (Virtual Box) installiert. Ich habe GIT installiert, ein Repo erstellt usw.

git init 
git add .
git commit "..."

Dann habe ich unter Windows so etwas wie unten gemacht (auf Cygwin)

git clone jiewmeng@192.168.0.3:proj1

Versuchte dann Änderungen vorzunehmen

git commit -am "..."

habe aber so etwas wie

siehe Bild

Ich nehme an, ich habe GIT falsch eingerichtet? Ich habe gelesen, dass es etwas mit nackten / nicht nackten Repos zu tun hat. Sollte ich die ganze Zeit nackt verwenden? Ich habe es versucht

git checkout --bare jiewmeng@192.168.0.3:proj1 

aber proj1.gitdrin drin, komische Dateien / Ordner wie (HEAD etc) drin. Was ist der richtige Weg, um GIT einzurichten?

Kann auch jemand nackte / nicht nackte Repos erklären, ich bin irgendwie verloren, mit GitHub gibt es so etwas nicht!

AKTUALISIERT 28. April 2011 18.00 Uhr UTC + 8

Ich habe versucht, http://www.youtube.com/watch?v=1gNFrPNF9-Y zu folgen und auf Ubuntu (Server)

git init --bare

dann unter Windows (Client / Cygwin)

git init 
// added readme.txt 
git add .
git commit -m "..."
git remote add origin master jiewmeng@192.168.0.3:proj2
git push origin master

Keine Fehler scheinen in Ordnung zu sein. Aber unter Ubuntu sehe ich nicht, wo meine Dateien sind? Ich habe dort nach dem branches/1. Platz gesucht?

Antworten:


9

Ein "normales" Repository ist ein Verzeichnis, das das eigentliche Repository und eine Arbeitskopie enthält. Das eigentliche Repository befindet sich in einem versteckten Unterverzeichnis mit dem Namen .git. Die Arbeitskopie sind die Dateien und Verzeichnisse, mit denen Sie arbeiten.

Ein "nacktes" Repository ist nur der Inhalt des .gitVerzeichnisses ohne Arbeitskopie.

Sie können nicht an einem nackten Repository arbeiten. Sie müssen zuerst das nackte Repository in ein normales Repository klonen und dann am Klon arbeiten.

Bei Ihrem ersten Versuch haben Sie ein "normales" Repository erstellt. Dann hast du das geklont. Dann haben Sie versucht, zum normalen Repository zurückzukehren. Dann hast du eine Warnung bekommen. Sie sollten nicht in ein normales Repository pushen. Git warnt Sie, wenn Sie das versuchen. Sie sollten nur in ein nacktes Repository pushen.

In Ihrem zweiten Versuch haben Sie ein "nacktes" Repository erstellt. Dann haben Sie ein "normales" Repository erstellt. Dann haben Sie vom normalen zum nackten Repository gewechselt. Dies ist einer der erwarteten Workflows. Deshalb haben Sie keine Fehler oder Warnungen erhalten.

Wenn Sie Ihr Projekt vom Windows-Computer und vom Ubuntu-Computer aus bearbeiten möchten, haben Sie zwei Möglichkeiten:

  1. Erstellen Sie ein nacktes Repository (egal wo). Klonen Sie dann aus diesem Repository, eines auf dem Windows-Computer und eines auf dem Ubuntu-Computer. Verschieben Sie nun von den Klonen in das Bare-Repository und ziehen Sie vom Bare-Repository zu den Klonen. Drücken Sie nicht auf die normalen Repositorys.

  2. Erstellen Sie zwei normale Repositorys, eines auf dem Windows-Computer und eines auf dem Ubuntu-Computer. Wenn Sie jetzt an Ubuntu arbeiten, können Sie von der Windows-Maschine ziehen und umgekehrt. Drücken Sie nicht aufeinander.

Fazit: Immer nur auf nackte Repositories pushen. In allen anderen Fällen, wenn Sie glauben, von A nach B wechseln zu wollen, gehen Sie stattdessen zu B und ziehen Sie dann von A.

Es scheint, dass Sie sehr neu in Git sind. Bitte lesen Sie eines oder beide der folgenden sehr guten Bücher: Git Book , Pro Git .


1
hmm scheint der Hauptlernpunkt zu sein: " Immer nur auf nackte Repositorys pushen. In allen anderen Fällen, wenn Sie denken, Sie möchten von A nach B pushen, gehen Sie stattdessen zu B und ziehen Sie dann von A ". Wenn ja, wie macht GitHub das? Ich drücke es nach rechts (nv hat es schon eine Weile benutzt ...)?
Jiew Meng

@JiewMeng: GitHub verwendet nackte Repositorys. Die Website liest Daten direkt von Git und benötigt kein Arbeitsverzeichnis.
user1686

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.