Einfache Versionskontrolle mit Git

Haben Sie schon einmal an einem Projekt gearbeitet, das so schwerfällig war, dass Sie Angst hatten, eine Datei zu aktualisieren oder eine Funktion hinzuzufügen? Vielleicht bestand das Problem darin, dass Sie kein Versionskontrollsystem verwendet haben. Im heutigen Tutorial lernen wir die Grundlagen des möglicherweise besten VCS der Welt: Git.

Was ist Git??

Git ist ein Open-Source-Code-Management-Tool. Es wurde von Linus Torvalds erstellt, als er den Linux-Kernel baute. Wegen dieser Wurzeln musste es wirklich schnell sein; dass es ist, und leicht, auch den Dreh raus zu bekommen. Mit Git können Sie an Ihrem Code mit der Gewissheit arbeiten, dass alles, was Sie tun, reversibel ist. Es macht es leicht, mit neuen Ideen in einem Projekt zu experimentieren und sich keine Sorgen darüber zu machen, dass irgendetwas kaputt geht. Das Git Parable von Tom Preston-Werner ist eine großartige Einführung in die Begriffe und Ideen von Git.

Warum sollte ich Git verwenden??

Sie sollten auf jeden Fall ein Revisionskontrollsystem verwenden. Wie bereits gesagt, gibt Ihnen dies die Freiheit, mit Ihrem Code das zu tun, was Sie möchten, und sich keine Sorgen darüber zu machen, dass Sie ihn brechen. Wenn Sie also die Vorteile eines Revisionskontrollsystems erkannt haben, warum sollten Sie git verwenden? Warum nicht SVN oder Perforce oder eine andere? Um ehrlich zu sein, habe ich die Unterschiede nicht zu genau untersucht. Schauen Sie sich WhyGitIsBetterThanX.com für hilfreiche Informationen an.

Wie kann ich mich einrichten??

Git ist ziemlich einfach zu bekommen: Auf einem Mac ist es wahrscheinlich am einfachsten, den git-osx-Installer zu verwenden. Wenn Sie MacPorts installiert haben, möchten Sie vielleicht Git durchlaufen lassen. Anweisungen finden Sie auf der GitHub-Hilfeseite. (Und ja, wir reden über GitHub). Unter Windows können Sie am einfachsten mit dem Rollout "msysgit" starten. Wenn Sie jedoch Cygwin haben, können Sie dort auch Git durchspielen.

Wie verwende ich Git?

Inzwischen sollten Sie Git installiert haben. Wenn Sie mit einem Mac arbeiten, öffnen Sie ein Terminal. Wenn Sie unter Windows arbeiten, öffnen Sie den Git Bash (von msysgit) oder Ihre Cygwin-Eingabeaufforderung. Ab hier sollten keine Unterschiede zwischen den Betriebssystemen bestehen.

Aufbau

Wir beginnen mit der Konfiguration. Jedes Commit, das Sie tätigen, enthält Ihren Namen und Ihre E-Mail-Adresse, um den "Eigentümer" des Commits zu identifizieren. Daher sollten Sie diese Werte zunächst angeben. Führen Sie dazu die folgenden Befehle aus:

 git config --global user.name "Ihr Name" git config --global user.email "[email protected]" 

Es ist auch schön, einige Textfarben zu aktivieren, um das Ablesen im Terminal zu erleichtern.

 git config --global color.diff automatisch git config --global color.status auto git config --global color.branch auto

git init

Nun, da Git weiß, wer Sie sind, stellen wir uns vor, wir erstellen eine einfache PHP-Web-App. (Je größer das Projekt ist, desto heller leuchtet Git, aber wir lernen nur die Tools, oder?) Wir haben ein leeres Verzeichnis namens 'mySite'. Konzentrieren Sie sich zuerst auf dieses Verzeichnis (mit dem Befehl cd). Um mit Git beginnen zu können, müssen Sie den Befehl git init ausführen. Wie Sie sich vorstellen können, initialisiert dies ein Git-Repository in diesem Ordner und fügt einen .git-Ordner hinzu. Ein Repository ist so etwas wie ein Code-History-Buch. Es enthält alle früheren Versionen Ihres Codes sowie die aktuelle.

Beachten Sie, dass Ihr Terminalpfad mit (Master) angehängt wird. Das ist der Zweig, an dem Sie gerade arbeiten. Ast? Stellen Sie sich Ihr Projekt als Baum vor. Sie können verschiedene Funktionen in verschiedenen Zweigen erstellen und alles bleibt getrennt und sicher.

git add

Wir haben begonnen, an unserer Anwendung zu arbeiten.

Bevor wir weitergehen, sollten wir unsere erste Verpflichtung eingehen. Ein Commit ist einfach ein Zeiger auf eine Stelle in Ihrem Codeverlauf. Bevor wir dies tun können, müssen wir jedoch alle Dateien verschieben, die Teil dieser Verpflichtung sein möchten, in den Bereitstellungsbereich. Der Bereitstellungsbereich ist ein Ort, an dem Dateien für den nächsten Commit gespeichert werden. Möglicherweise möchten Sie nicht alle Ihre aktuellen Änderungen festschreiben, also setzen Sie einige in den Staging-Bereich. Dies können Sie mit dem Befehl add tun

 git add . 

Das . bedeutet einfach alles hinzuzufügen. Sie könnten genauer sein, wenn Sie wollten.

 git add * .js git add index.php 

git begehen

Nun, da wir unsere Dateien inszeniert haben, legen wir sie fest. Dies geschieht mit dem Befehl

 git begehen 

Dies nimmt alle Dateien in unserem Bereitstellungsbereich und markiert diesen Code als einen Punkt in der Projektgeschichte. Wenn Sie dem obigen Befehl keine Optionen hinzufügen, erhalten Sie so etwas.

Jedes Commit sollte eine Begleitmeldung enthalten, damit Sie wissen, warum der Code festgeschrieben wurde. Mit diesem Editor können Sie Ihre Nachricht schreiben und sehen, was in diesem Commit enthalten ist. Das Bild oben zeigt, dass dieses Commit aus vier neuen Dateien besteht. Der Editor, den Sie zum Schreiben der Nachricht verwenden, ist Vim. Wenn Sie sich mit vim nicht auskennen, sollten Sie wissen, dass Sie i (für Einfügen) drücken müssen, bevor Sie Ihre Nachricht eingeben können. In der obigen Aufnahme habe ich die Meldung "Initial Commit" hinzugefügt. Nachdem Sie Ihre Nachricht geschrieben haben, drücken Sie die Escape-Taste und geben Folgendes ein: wq (zum Speichern und Beenden). Sie werden dann sehen, dass Ihre Zusage stattfindet.

Sie können einige Optionen verwenden, um Commits schneller zu machen. Erstens können Sie mit -m Ihre Nachricht inline hinzufügen.

 git commit -m "Initial Commit" 

Dann können Sie mit -a den Bereitstellungsbereich überspringen. nicht wirklich. Bei Verwendung dieser Option stellt Git alle geänderten Dateien automatisch bereit und schreibt sie ein. (Denken Sie daran, es werden keine neuen Dateien hinzugefügt). Zusammen könnten Sie diese Befehle wie folgt verwenden:

 git commit -am 'Update auf index.php' 

Wie unterscheidet sich Git also von Commits? Anstatt sie zu nummerieren, verwendet Git den Code-Inhalt des Commits, um einen 40-stelligen SHA1-Hash zu erstellen. Das Schöne daran ist, dass, da der Code zum Erstellen des Hashes verwendet wird, keine zwei Hashes in Ihrem Projekt identisch sind, es sei denn, der Code in den Commits ist identisch.

Git-Status

Das Git-Status Mit dem Befehl können Sie den aktuellen Status Ihres Codes anzeigen. Wir haben gerade ein Commit gemacht Git-Status wird uns zeigen, dass es nichts Neues gibt.

Wenn wir weiter an unserem imaginären Projekt arbeiten, werden Sie feststellen, dass sich unser Status ändert. Ich werde unsere index.php bearbeiten und eine weitere Datei hinzufügen. Jetzt rennen Git-Status gibt uns das:

Das Update ist in zwei Kategorien unterteilt: "Geändert, aber nicht aktualisiert" und "Nicht protokollierte Dateien". Wenn wir ausführen

 git add userAuthentication.php git status 

Sie werden sehen, dass wir jetzt einen Abschnitt mit den Änderungen haben, die festgeschrieben werden müssen. Dies listet Dateien auf, die zum Bereitstellungsbereich hinzugefügt wurden. Ich werde diese Änderungen damit festlegen:

 git commit -am 'Benutzerauthentifizierungscode hinzugefügt' 

Jetzt läuft Git-Status zeigt uns ein sauberes Arbeitsverzeichnis.

Git Filiale / Git Kasse

Hier ist ein Szenario: Wir arbeiten glücklich an unserem Projekt, als wir plötzlich eine großartige Idee haben. Diese Idee ist so revolutionär, dass sie unser Projekt drastisch verändern wird. Wir müssen es versuchen, aber wir wollen diesen unsicheren, ersten Entwurf nicht in unseren getesteten und echten Code einfließen lassen. Was ist zu tun? Das ist wo Git-Zweig wird enorm hilfreich sein. Lassen Sie uns unser Projekt verzweigen, so dass, wenn unsere große Idee nicht klappt, kein Schaden entsteht.

 Git-Zweig 

Einfach den Verzweigungsbefehl ausführen Sans Optionen werden unsere Niederlassungen auflisten. Im Moment haben wir nur den Master-Zweig, mit dem jedes Git-Repository beginnt. Um tatsächlich einen neuen Zweig zu erstellen, fügen Sie nach dem Befehl den Namen Ihres neuen Zweigs hinzu.

 git branch bigIdea 

Wenn Sie einen neuen Zweig erstellen, werden Sie nicht automatisch auf diesen Zweig umgestellt. Beachten Sie, dass unser Terminal immer noch (Master) sagt. Hier verwenden wir den Zweiggenossen-Befehl git checkout.

 git checkout bigIdea 

(Tipp: Mit diesem Befehl können Sie einen Zweig erstellen und auf einen Schlag darauf wechseln: git checkout -b Name der Niederlassung.) Wie Sie sehen können, befinden wir uns jetzt im bigIdea-Zweig. Lasst uns einen Sturm aufstellen. Git-Status wird unsere Arbeit zeigen.

Lassen Sie uns unsere Änderungen festlegen:

 git add. git commit -m 'The Kiler Feature hinzugefügt' 

Okay, genug von diesem Feature für den Moment. Kommen wir zu unserem Stammzweig zurück. Bevor wir dies tun, möchte ich Ihnen unseren aktuellen Projektordner zeigen.

Wechseln Sie jetzt zurück zum Hauptzweig. du weißt wie:Git Checkout-Master. Schauen Sie sich noch einmal unseren Projektordner an.

Nein, ich habe nichts gemacht. Diese beiden Dateien sind nur ein Teil des bigIdea-Zweigs. Wir wissen also nicht einmal, dass sie vom Master-Zweig existieren. Dies funktioniert nicht nur für vollständige Dateien, sondern auch für die kleinsten Änderungen in Dateien.

git merge

Ok, also haben wir in unserer Freizeit hart an diesem bigIdea-Zweig gearbeitet. Nach einem weiteren Commit sieht es so süß aus, dass wir entschieden haben, dass es gut genug ist, um in den Master-Zweig einzusteigen. Wie machen wir das??

Das git merge Befehl wird genau für diesen Zweck gemacht. Versuchen Sie es in der Master-Niederlassung:

 git merge bigIdea 

So einfach ist das; Jetzt ist alles in der bigIdea-Filiale Teil der Master-Filiale. Sie können den bigIdea-Zweig jetzt loswerden, wenn Sie möchten.

 Git-Zweig -d BigIdea

Ich sollte erwähnen, dass Git Sie nicht mit diesem Befehl löschen lässt, wenn Sie keinen Zweig zusammengefügt haben. Sie müssen in der Option einen Großbuchstaben D verwenden. Dies ist nur eine Sicherheitsmaßnahme.

Git Log / Git

Wahrscheinlich möchten Sie sich Ihren Commit-Verlauf irgendwann während Ihres Projekts ansehen. Dies kann leicht mit dem Befehl log ausgeführt werden.

 Git Log 

Daraufhin wird eine Liste aller Commits ausgegeben, die Sie in einem Projekt vorgenommen haben. Diese werden in umgekehrter Reihenfolge angezeigt. Sie können hier ein ordentliches Stück Informationen erhalten:

  • der Commit-Autor
  • der Commit-Hash
  • das Datum und die Uhrzeit
  • die Nachricht

Auf jeden Fall informativ, aber eher trocken, nein? Mit der Grafikoption können wir die Dinge ein wenig aufhellen.

 Git Log - Grafik 

Jetzt können wir die Baumstruktur sehen. Obwohl wir ihre Namen nicht erhalten, können wir jeden Zweig sehen, und welche Commits für sie gemacht wurden. Wenn Sie es gewohnt sind, in einem Terminal zu arbeiten, können Sie damit zufrieden sein. Wenn jedoch (vor dieser Erfahrung) das Wort Terminal fällt Ihnen zunächst als etwas Tödliches auf, atmen Sie leicht: dafür gibt es eine App. Versuche dies:

 gitk --all 

Dies ist der grafische Repository-Browser. Sie können Ihre Commits durchsuchen, genau sehen, was in jeder Datei während eines Commits geändert wurde, und vieles mehr. (Sie werden feststellen, dass ich vor dem Zusammenführen einige Commits hinzugefügt habe, nur um die Baumstruktur erkennbarer zu machen.)

GitHub

Nun, da Sie ein vernünftiges Wissen über Git haben, wollen wir uns einige der kollaborativen Teile von Git ansehen. Git ist eine großartige Möglichkeit, um Code mit anderen zu teilen und gemeinsam an Projekten zu arbeiten. Es gibt eine Reihe von Git-Repository-Hosting-Sites. Wir werden nur einen betrachten: GitHub.

Gehen Sie zur GitHub-Anmeldeseite und erstellen Sie ein Konto. Sie benötigen einen öffentlichen SSH-Schlüssel, also erstellen wir ihn jetzt! (Hinweis: Sie benötigen den Schlüssel während der Anmeldung nicht; Sie können ihn später hinzufügen.)

Öffnen Sie Ihr Terminal und geben Sie Folgendes ein:

 ssh-keygen -t rsa -C "[email protected]" 

Die Option t weist einen Typ zu und die Option C fügt einen Kommentar hinzu, normalerweise Ihre E-Mail-Adresse. Sie werden dann gefragt, wo der Schlüssel gespeichert werden soll. Drücken Sie einfach die Eingabetaste, um die Datei am Standardspeicherort zu speichern. Geben Sie dann zweimal eine Passphrase ein. Jetzt hast du einen Schlüssel. lass es uns GitHub geben.

Holen Sie sich zuerst Ihren Schlüssel aus der Datei. Das Terminal hat Ihnen mitgeteilt, wo der Schlüssel gespeichert wurde. Öffnen Sie die Datei, kopieren Sie den Schlüssel (achten Sie darauf, keine Zeilenumbrüche oder Leerzeichen hinzuzufügen). Öffnen Sie Ihre GitHub-Kontoseite, scrollen Sie zu SSH Public Keys und klicken Sie auf "Weitere öffentliche Schlüssel hinzufügen". Fügen Sie Ihren Schlüssel ein und speichern Sie ihn. Du bist gut zu gehen! Sie können Ihre Authentifizierung testen, indem Sie Folgendes ausführen:

 ssh [email protected] 

Sie werden zur Eingabe Ihrer Passphrase aufgefordert. Damit Sie nicht jedes Mal eingeben müssen, wenn Sie eine Verbindung zu GitHub herstellen, können Sie dies automatisieren. Ich könnte Ihnen sagen, wie das geht, aber ich würde wahrscheinlich versehentlich plagiieren: In der GitHub-Hilfe finden Sie einen englischsprachigen Artikel.

Git-Klon

Jetzt sind Sie mit GitHub eingerichtet. lass uns ein Projekt nehmen. Wie wäre es mit jQuery? Wenn Sie zum jQuery GitHub-Projekt wechseln, finden Sie die git clone-URL. Führen Sie das aus:

 git clone git: //github.com/jquery/jquery.git 

Dadurch wird ein Jquery-Ordner erstellt und das gesamte Jquery-Repository auf Ihren Computer kopiert. Jetzt haben Sie eine vollständige Geschichte des Projekts. überprüfe es mit gitk -all.

git Push

Nehmen wir an, Sie haben an einem Projekt gearbeitet und es mit git lokal verwaltet. Jetzt möchten Sie es mit einem Freund oder der Welt teilen. Melden Sie sich bei GitHub an und erstellen Sie ein neues Repository. GitHub gibt Ihnen eine öffentliche Klon-URL (für andere, die Ihr Projekt herunterladen möchten) und eine persönliche Klon-URL (für sich selbst)..

Kehren Sie dann zu Ihrem Projekt im Terminal zurück und machen Sie einen Wirbel:

 git remote add origin [email protected]: andrew8088 / Shazam.git 

Ein Remote ist ein Projekt-Repository an einem Remote-Standort. In diesem Fall geben wir dieser Fernbedienung einen Ursprungsnamen und übergeben unsere private Klon-URL. (Natürlich müssen Sie meine URL durch Ihre eigene ersetzen.) Nun, da das Projekt weiß, wohin es geht…

 git Push Ursprungsmaster 

Dadurch wird der Master-Zweig zur Ursprungsfernbedienung verschoben. Jetzt steht Ihr Projekt der Welt zur Verfügung! Gehen Sie zurück zu Ihrer Projektseite und sehen Sie Ihr Projekt.

git ziehen

Sie befinden sich möglicherweise am anderen Ende eines Projekts: Sie sind ein Mitwirkender anstelle des Eigentümers. Wenn der Besitzer ein neues Commit in das Repository überträgt, können Sie verwenden git ziehen um die Updates zu erhalten. Git ziehen ist eigentlich ein Combo-Tool: es läuft git holen (die Änderungen bekommen) und git merge (Zusammenführen mit Ihrer aktuellen Kopie).

 git ziehen 

Du bist eingestellt!

Nun, es gibt so viel mehr über Git; hoffentlich haben Sie genug Befehle gelernt, um Ihr nächstes Projekt intelligenter zu verwalten. Aber hör nicht hier auf. Schauen Sie sich diese Ressourcen an, um Git-Meister zu werden!

  • Git, GitHub und Social Coding (YUI Theater)
  • GitHub Learning Center
  • Gitcasts.com: Screencasts auf Git
  • Die Git-Site
  • Mein öffentliches Git Evernote-Buch
  • Folgen Sie uns auf Twitter oder abonnieren Sie den Nettuts + RSS-Feed für die besten Webentwicklungs-Tutorials im Web.