2010-12-15 11 views
6

IntroWie verwende ich Git und Git Extensions?

ich SVN habe, bevor sie verwendet, als ich als Solo-Programmierer arbeitete, nur ein Offsite-Aufzeichnung zu halten, was ich tat, damit ich weiß, Art über Ideen wie „Repositorys“ und "commits" und ähnliches, obwohl nicht viel mehr als das. "Branches", "Merges" und "Check-out" sind für mich leider ein Rätsel.

Ich möchte Git benutzen, weil wir ein paar Leute haben, die außerhalb des Büros arbeiten und sich beschwert haben, dass sie manchmal nicht zu anderen Versionskontrollsystemen gelangen können, weil ihre IDE-Integration sie dazu veranlasst schmollen und fallen um, wenn sie außer Kontakt kommen. Git 'Idee von "Jedes Arbeitsverzeichnis ist ein Repository" scheint so zu sein, als würde es einen Weg zur Lösung dieses Problems gehen.

Wie auch immer, ich habe die "Git Extensions" heruntergeladen, um das Shiny zu den Windows Kontextmenüs hinzuzufügen, und ich habe festgestellt, dass ich wirklich kein Konzept habe, wie ich das verwenden soll, um meine zu steuern Versionierung. Nicht alles, was offensichtlich nach einer Google-Suche zu finden, stelle ich das folgende theoretische Szenario Überlauf in der Hoffnung Stack, dass jemand mir sagen, was in kleinen Worten zu tun,:

Szenario

ich drei Projekte habe. Ein Projekt, ProjectReuse, wird von den beiden anderen Projekten (ProjectA und ProjectB) verwendet. Verschiedene Personen in der Organisation müssen den Code für jedes Projekt mithilfe von Visual Studio 2010 bearbeiten.

Ich habe drei Ordner auf meinem Desktop mit der Beschriftung "ProjectReuse", "ProjectA" und "ProjectB". Ich habe das Fenster Git Extenstions geöffnet. Eine Kuh, die einen Weihnachtsmannhut trägt, starrt mich an.

Fragen

Was ich jetzt tun die Repositorys derart zu schaffen, dass mehrere Personen (einschließlich der lästigen nicht-immer-Vor-Ort-Männer) ein Repository zugreifen können, wenn sie brauchen , vor Ort oder aus, mit oder ohne permanente Verbindung zu unseren Servern?

Wenn der erste Typ eine Datei bearbeiten muss, was muss er tun? Auschecken? Ast? Ich muss das den anderen Teammitgliedern erklären und ich bin ein wenig wackelig bei diesen Konzepten, ich selbst. Ich habe vorher nur die Versionskontrolle für meine Solo-Projekte verwendet.

wheedling und Ausreden

Die erste, "wie kann ich dies auf?" Frage ist das, woran ich am meisten interessiert bin, aber ich denke, wenn ich nach dem Führer des Idioten frage, kann ich genauso gut wie möglich nach dem nächsten Idioten fragen, der auf diese Frage stößt. Ich suche hier keine besonders eingehenden Antworten. Ich habe einfach kein klares Bild davon, wie ein Versionsverwaltungssystem für mehrere Benutzer funktioniert. Sobald ich das im Hinterkopf habe, sollte ich in der Lage sein, den Rest selbst zusammenzustellen.

+0

+1 für "Ich habe das Git Extenstions-Fenster geöffnet. Eine Kuh, die einen Weihnachtsmann-Hut trägt, starrt mich an." lol, das ist so, wie so viele neue Benutzer über viel Software denken. –

Antwort

10

Ok, lass uns das erste Ding über Git gerade gehen. Git ist verteilt. Wiederholen Sie dies für sich selbst so oft wie nötig: Es gibt keinen zentralen Server, kein zentrales Repository oder irgendetwas anderes. Ganz im Gegensatz zu SVN greifen Sie nicht alle auf ein Repository zu (nichts Zentrales).

Was Sie tun, ist ein Repository irgendwo zu erstellen. Dann klont (kopiert) jeder andere. Jetzt hat jeder seine eigene Kopie des Repositories und kann damit tun, was er will.Branchennamen müssen nicht einmal in Repositories konsistent sein, obwohl viele Leute dies tun, da es hilft.

Also, wie richtest du es ein? Sie initiieren ein Repository, dann klont jeder, der es will. In Ihrem Fall würde ich empfehlen, dass jedes Projekt sein eigenes Git-Repository hat, anstatt alle drei zusammenzufassen.

Aber aber aber wie in aller Welt soll ich ein Entwicklungsteam leiten, höre ich dich sagen? Hab niemals Angst. Ich habe gesagt, dass es kein zentrales Repository gibt, aber das hindert Sie nicht daran, eines der Repositories als Release-Repository zu definieren und ein anderes als Experimental oder was auch immer.

Was Sie dann brauchen, ist ein Workflow. In der Regel erstellen Sie das Release-Repository und sagen dann: "Jeder zieht hier vom Master". Dies ist deine letzte "stabile" Version. Jetzt sagst du jedem, von hier aus zu verzweigen und seine neuen Funktionen zu entwickeln. Sie tun das. Wenn Sie damit fertig sind, bitten Sie die Leute, ihre Änderungen wieder in ihren eigenen Master oder wo auch immer einzufügen, dann ziehen Sie, der Release-Manager, von ihnen (wahrscheinlich in einen Entwicklungszweig), aber Sie könnten es in Ihren Release-Master tun, weil es trivial ist rückgängig machen). Die nächste Person aktualisiert dann ihren Master und führt ihre Zusammenführung durch. Sie lösen ihre eigenen Zusammenführungskonflikte usw. auf, bis Sie alle gewünschten Funktionen haben. Du tust dein Testen etc, dann zieht das Release-Repository wirklich all das in seinen Master.

In der Praxis können Sie viele verschiedene Dinge tun. Zum Beispiel, wenn Sie viele Leute haben, werden Sie ziemlich viel Kommunikation brauchen, denn wenn viele Leute inkompatible Änderungen an Ihrem geteilten Projekt vornehmen, wird es ein paar Merge-Commits geben. Um dies zu vermeiden, können Benutzer voneinander trennen oder zusammenführen oder ein lokales "gemeinsames" Repository verwenden.

Es funktioniert.

+1

Wenn Sie einen Basis-Workflow starten möchten, werfen Sie einen Blick darauf: http://nvie.com/archives/323. Beachten Sie, dass der Workflow zwischen verteilten und zentralen SCMs unterschiedlich sein kann. Nehmen Sie sich Zeit, wenn Sie müssen. Und eine letzte Sache: TortoiseGit ist meiner Erfahrung nach gereifter und einfacher zu benutzen als Git Extensions. – Ither

+0

@Iher Oh wow, da ist ein TortoiseGit? Ich werde das bestimmt sehen. – Frosty840

3

Wie von Ninefingers gesagt, nur ein neues Repository initiieren und andere klonen lassen. Wenn Sie ein öffentliches (oder zentrales) Repository erstellen möchten, erstellen Sie ein gemeinsames Repository und kein privates Repository. Der einfachste Weg besteht darin, zuerst ein persönliches Repository zu erstellen und es dann an einen Ort (z. B. Netzwerkfreigabe) zu klonen, auf den jeder als gemeinsames Repository zugreifen kann.

habe ich ein paar Video-Tutorials für Git Extensions hier: http://code.google.com/p/gitextensions/ Die Video-Tutorials sind ein wenig alt und nicht sehr gut, da ich kein Mikrofon oder keine Videobearbeitung Fähigkeiten, aber es sollte man genug zu bekommen, gestartet.

Viel Glück!

Verwandte Themen