Softwareentwicklung ist ein kollaborativer Job. Als Software -Ingenieur müssen Sie Ihre Arbeit mit anderen teilen. Das Teilen von Code und Zusammenarbeit kann jedoch kompliziert werden. Es ist schwierig, verschiedene Veränderungen im Auge zu behalten, die während des Lebenszyklus einer Software stattfinden. Die Entwicklungsteams verlassen sich also auf Versionsteuerungstools für Versionen, um den Software -Zusammenarbeitsprozess zu unterstützen. Git ist eines der bekanntesten Versionskontrollwerkzeuge in der Softwarebranche.
Spitze: In diesem Tutorial lernen Sie, wie Sie die Grundlagen von Git verwenden können. Jeder Abschnitt endet mit ein paar Fragen. Sie können die Fragen lesen, bevor Sie den Abschnitt lesen. Dies wird Ihnen helfen, die wichtigen Punkte zu verstehen und zu achten.
Viel Spaß beim Lernen von Git!
Git: Eine kurze Übersicht
Git ist ein verteiltes Versionskontrollsystem. Es verfolgt alle Änderungen, die Sie an Ihren Dateien und Ordnern vornehmen. Es erleichtert es, Ihre Arbeit in der Arbeit zu speichern. Wenn es ein Problem gibt, können Sie problemlos eine frühere Version der Datei oder des Ordners überprüfen. Bei Bedarf können Sie Ihre gesamte Codebasis sogar in eine ältere Version zurückkehren.
Die Entwicklung von Git begann 2005. Die Linux -Kernelgruppe, die verwendet wird, um ihren Code in Bitkeeper, einem proprietären verteilten Versionskontrollsystem, zu verwalten. Bitkeeper zog jedoch seine kostenlose Nutzung des Produkts zurück. Also hat Linus Torvalds, der Schöpfer und Hauptentwickler von Linux, ein neues Open-Source-Verteilungssteuerungssystem entwickelt, das den Anforderungen der Linux-Entwicklungsgemeinschaft entspricht. Und Git wurde geboren.
Als verteiltes Versionskontrollsystem benötigt Git keine zentralisierte Behörde, um den Code zu verfolgen. Ältere zentralisierte Versionskontrollen wie CVS, SVN oder Perforce erfordern zentrale Server, um die Geschichte von Änderungen aufrechtzuerhalten. Git kann alle Änderungen lokal im Auge behalten und Peer-to-Peer-Peer-to-Peer-. Es ist also vielseitiger als zentralisierte Systeme.
Fragen:
Git installieren
Für Linux -Systeme, die Git installieren, ist es einfach. Wenn Sie eine debianbasierte Verteilung wie Ubuntu verwenden, können Sie die APT-Installation verwenden:
$ sudo apt installieren Sie Git-All
Für Fedora, Rhel oder CentOS können Sie verwenden:
$ sudo dnf Installieren Sie Git-All
Sie können überprüfen, ob Git mit dem folgenden Befehl installiert wurde:
$ git -Verssion
Es sollte Ihnen die Version des von Ihnen installierten Gits zeigen, zum Beispiel:
Git Version 2.17.0
Sobald Sie Git installiert haben, ist es Zeit, Ihren Benutzernamen und Ihre E -Mail einzurichten:
$ git config --global Benutzer.Nennen Sie "Ihren Benutzernamen"
$ git config --global Benutzer.E -Mail "[email protected] "
Sie können überprüfen, ob die Konfigurationen mit dem folgenden Befehl ordnungsgemäß eingestellt wurden:
$ git config -list
Benutzer.name = yourusername
Benutzer.E -Mail = [email protected]
Spitze: Es ist wichtig, den Benutzer festzulegen.Name und Benutzer.E -Mail, da diese Konfigurationen verwendet werden, um Ihre Änderungen zu verfolgen.
Fragen
Git konzeptionell verstehen
Um Git zu verwenden, müssen Sie zuerst diese vier Konzepte verstehen:
Das Arbeitsverzeichnis, das Staging -Bereich und das Repository sind lokal in Ihrer Maschine. Das Remote -Repository kann jeder andere Computer oder Server sein. Stellen wir uns diese Konzepte als vier Kästchen vor, die Standard -A1 -Papiere enthalten können.
Angenommen, Sie schreiben ein Dokument von Hand auf einem A1 -Papier an Ihrem Schreibtisch. Sie führen dieses Dokument im Arbeitsverzeichnisfeld bei. In einem bestimmten Stadium Ihrer Arbeit entscheiden Sie, dass Sie bereit sind, eine Kopie der Arbeit zu führen, die Sie bereits geleistet haben. Sie machen also eine Fotokopie Ihres aktuellen Papiers und legen es in die Staging -Box.
Die Staging -Box ist ein temporärer Bereich. Wenn Sie sich entscheiden, die Fotokopie im Staging -Box zu verwerfen und mit einer neuen Kopie des Arbeitsverzeichnisdokuments zu aktualisieren.
Angenommen, Sie sind sich ziemlich sicher, dass Sie die dauerhafte Aufzeichnung des Dokuments, das Sie in der Staging -Box haben. Dann machen Sie eine Fotokopie des Staging -Box -Dokuments und verschieben es in die Repository -Box.
Wenn Sie es in die Repository -Box verschieben, passieren zwei Dinge:
Der Protokolleintrag hilft Ihnen dabei.
Jetzt, im lokalen Repository -Feld. Aber es steht Ihnen nur zur Verfügung. So erstellen Sie zusammen mit der Protokolldatei eine Kopie Ihres lokalen Repository -Dokument. Jetzt kann jeder in Ihrem Unternehmen kommen und eine Kopie Ihres Dokuments erstellen und es an seinen Schreibtisch bringen. Die Schachtel im Versorgungsraum wäre das Remote -Repository.
Das Remote -Repository ist wie das Teilen Ihres Dokuments mit Google Docs oder Dropbox.
Fragen:
Ihr erstes Git -Repository
Sobald Sie Git installiert haben, können Sie Ihre eigenen Git -Repositories erstellen. In diesem Abschnitt werden Sie Ihr Git -Repository initialisieren.
Angenommen, Sie arbeiten an einem Webentwicklungsprojekt. Erstellen wir einen Ordner namens Project_Helloworld und wechseln in das Verzeichnis:
$ mkdir project_helloworld
$ cd project_helloworld
Sie können Git angeben, dieses Verzeichnis mit dem folgenden Befehl zu überwachen:
$ git init
Sie sollten eine solche Ausgabe sehen:
Initialisierte leere Git -Repository in/user/zakh/_work/lerngit/git_tutorial/
project_helloworld/.Git
Jetzt werden alle Dateien und Ordner in Project_Helloworld von Git verfolgt.
Fragen:
Grundlegende Git -Befehle: Status, Protokoll, Hinzufügen und Festlegen
Der Statusbefehl zeigt den aktuellen Zustand Ihres Arbeitsverzeichnisses und der Protokollbefehl zeigt den Verlauf an. Versuchen wir den Statusbefehl:
$ Git Status
Auf Branch Master
Erstes Commit
Nichts zu verpflichten (erstellen/kopieren und verwenden Sie "Git Add", um zu verfolgen)
Die Ausgabe des GIT -Statusbefehls besagt, dass Sie sich im Master -Zweig befinden. Dies ist der Standardzweig, den Git initialisiert. (Sie können Ihre eigenen Zweige erstellen. Mehr über Zweige später). Außerdem sagt die Ausgabe, dass es nichts zu verpflichten gibt.
Versuchen wir den Protokollbefehl:
$ git log
Fatal: Ihr aktueller Zweig -Meister hat noch keine Commits
Es ist also Zeit, Code zu erstellen. Erstellen wir eine Datei namens Index.HTML:
Sie können den Texteditor verwenden, um die Datei zu erstellen. Sobald Sie die Datei gespeichert haben, überprüfen Sie den Status erneut:
$ Git Status
Auf Branch Master
Erstes Commit
Unbekannte Dateien:
(Verwenden Sie "Git add ...", um in das einzubeziehen, was begangen wird)
Index.html
Nichts hinzugefügt zu Commits, aber nicht vorhandene Dateien (verwenden Sie "Git Add", um zu verfolgen)
Git sagt Ihnen, dass Sie eine Datei namens Index haben.HTML in Ihrem Arbeitsverzeichnis, das nicht zusammengegangen ist.
Stellen wir sicher.HTML ist verfolgt. Sie müssen den Befehl hinzufügen:
$ git Index hinzufügen.htmlAlternativ können Sie das verwenden “.Option, alles im Verzeichnis hinzuzufügen:
$ git add .
Lassen Sie uns nun den Status erneut überprüfen:
$ Git Status
Auf Branch Master
Erstes Commit
Änderungen, die begangen werden müssen:
(Verwenden Sie "Git rm -cached ...", um sich zu lösen)
Neue Datei: Index.html
Das Grün gibt an, dass der Index.Die HTML -Datei wird von Git verfolgt.
Spitze: Wie in den obigen Anweisungen erwähnt, verwenden Sie, wenn Sie den Befehl verwenden:
$ git rm -cached Index.htmlIhr Index.HTML kehrt wieder in den nicht zusammengezogenen Status zurück. Sie müssen es erneut hinzufügen, um es wieder in die Inszenierung zu bringen.]
Lassen Sie uns das Protokoll erneut überprüfen:
$ git log
Fatal: Ihr aktueller Zweig -Meister hat noch keine Commits
Obwohl Git den Index verfolgt.HTML, es gibt noch nichts im Git -Repository über die Datei. Lassen Sie uns unsere Änderungen begehen:
$ Git Commit -m "engagierende Index.html "Der Text in den Zitaten nach dem „-m“ ist ein Kommentar, der in die Protokolldatei eingeht. Sie können Git Commit ohne „-m“ verwenden, aber dann öffnet Git einen Texteditor, der Sie auffordert, die Kommentare zu schreiben. Es ist einfacher, die Kommentare einfach direkt in die Befehlszeile zu setzen.
Überprüfen wir nun unsere Protokolldatei:
$ git log
Commit F136D22040BA81686C9522F4FF94961A68751AF7
Autor: Zak H
Datum: Mo 4. Juni 16:53:42 2018 -0700
Index begehen.html
Sie können sehen, dass es ein Commit zeigt. Sie haben Ihre Änderungen in Ihrem lokalen Repository erfolgreich verpflichtet. Wenn Sie das gleiche Anmelden auf präzise Weise sehen möchten, können Sie den folgenden Befehl verwenden:
$ Git -Protokoll -EinmalWenn wir uns weiterentwickeln, werden wir diese Form des Protokollbefehls verwenden, da es einfacher zu verstehen ist, was los ist.
Lassen Sie uns den Index bearbeiten.html. Öffnen Sie den Index.HTML -Datei in einem Editor und ändern Sie die "Hello World" -Linie in "Hello World"! Da ich bin!Und rette es. Wenn Sie den Status erneut überprüfen, wird Git festgestellt, dass Sie die Datei bearbeiten:
$ Git Status
Auf Branch Master
Änderungen, die nicht für Commits inszeniert sind:
(Verwenden Sie "Git add ...", um zu aktualisieren, was begangen wird)
(Verwenden Sie "Git Checkout - ...", um Änderungen im Arbeitsverzeichnis abzuwerfen)
Modifiziert: Index.html
Keine Änderungen hinzugefügt zu Commit (verwenden "Git Add" und/oder "Git Commit -a"))
Die Änderung befindet sich noch in Ihrem Arbeitsverzeichnis. Sie müssen es in den Staging -Bereich schieben. Verwenden Sie den zuvor verwendeten Befehl hinzufügen:
$ git add .
Überprüfen Sie den Status erneut:
$ Git Status
Auf Branch Master
Änderungen, die begangen werden müssen:
(Verwenden Sie "Git Reset Head ...", um sich zu lösen)
Modifiziert: Index.html
Jetzt befinden sich Ihre Änderungen im Staging -Bereich. Sie können es für dauerhafte Sicherung an das Repository verpflichten:
$ git Commit -m modifizierter Index.HTML zu einer glücklicheren Nachricht "
[Master 0586662] Modifizierter Index.HTML zu einer glücklicheren Nachricht
1 Datei geändert, 1 Insertion (+), 1 Löschen (-)
Sie können das Protokoll auf Ihre dauerhaften Änderungen überprüfen:
$ Git -Protokoll -Einmal
0586662 Modifizierter Index.HTML zu einer glücklicheren Nachricht
F136D22 Begegnung Index.html
In diesem Abschnitt haben Sie gelernt, Befehle zu verwenden, zu protokollieren, hinzuzufügen und zu begehen, um Ihre Dokumente in Git zu verfolgen.
Fragen:
Zurück zu älteren Dateien mit dem Checkout
Wenn Sie eine Datei in Git begehen, werden für jeden Commit ein einzigartiger Hash erstellt. Sie können diese als Bezeichner verwenden, um zu einer älteren Version zurückzukehren.
Nehmen wir an, Sie möchten zu Ihrer früheren Indexversion zurückkehren.html. Schauen wir uns zunächst den Index an.HTML im aktuellen Zustand:
$ cat Index.htmlSie können sehen, dass Sie die neuere Version haben („Hallo Welt! Da ich bin!”)). Lassen Sie uns das Protokoll überprüfen:
$ Git -Protokoll -Einmal
0586662 Modifizierter Index.HTML zu einer glücklicheren Nachricht
F136D22 Begegnung Index.html
Der Hash für die vorherige Version war F136D22 („Hello World“). Sie können mit dem Befehl checkout zu dieser Version werden:
$ git checkout f136d22
Hinweis: Überprüfen Sie 'F136D22'.
Sie befinden sich im Zustand "Abstand. Sie können sich umsehen, experimentelle Änderungen vornehmen
und verpflichten
ohne Zweige zu beeinflussen, indem sie eine andere Kasse durchführen.
Wenn Sie eine neue Filiale erstellen möchten, um von Ihnen erstellte Commits beizubehalten, können Sie möglicherweise
Tun Sie dies (jetzt oder später), indem Sie -b erneut mit dem Kassebefehl verwenden. Beispiel:
Git Checkout -b
Der Kopf ist jetzt bei F136D22… Index begehen.html
Wenn Sie sich den Inhalt des Index ansehen.HTML, Sie werden sehen:
$ cat Index.htmlEs hat nur "Hallo Welt". Also dein Index.HTML hat sich in die ältere Version geändert. Wenn Sie den Status überprüfen:
$ Git Status
Kopf getrennt bei F136D22
Nichts zu begehen, Arbeitsverzeichnis sauber
Git sagt Ihnen im Grunde, dass der Kopf nicht im letzten Commit ist. Sie können zum neuesten Commit zurückkehren, indem Sie den Master -Zweig mit dem folgenden Befehl überprüfen:
$ Git Checkout MasterWenn Sie nun den Status überprüfen:
$ Git Status
Auf Branch Master
Nichts zu begehen, Arbeitsverzeichnis sauber
Die rote Warnung ist weg. Auch wenn Sie Ihren Index überprüfen.HTML, Sie sollten zur neuesten Version zurückkehren:
$ cat Index.htmlMit dem Kassebefehl bringt Sie in verschiedene Staaten. Wir werden im nächsten Abschnitt mehr über die Kasse erfahren.
Fragen:
Kasse, Verzweigung und Verschmelzung
Die Verzweigung ist eine der besten Funktionen von Git. Es hilft Ihnen, Ihre Arbeit zu trennen und mehr zu experimentieren. In anderen Versionskontrollsystemen war die Verzweigung zeitaufwändig und schwierig. Git erleichterte die Verzweigung und Verschmelzung.
Wie Sie im Statusbefehl bemerkt haben, befinden Sie sich beim Erstellen eines neuen Git -Repositorys im Master -Zweig.
$ Git Status
Auf Branch Master
Nichts zu begehen, Arbeitsverzeichnis sauber
Angenommen, Sie erstellen eine Website für Ihren Freund David. Sie möchten den Code Ihrer eigenen Website wiederverwenden. Verzweigung ist eine großartige Lösung. Nennen wir den Zweig David_Website.
Sie können den folgenden Befehl ausgeben:
$ Git Branch David_Website
Sie können den folgenden Befehl verwenden, um alle Zweige zu sehen:
$ git branch -list
David_Website
* Meister
Der Stern (*) neben Meister bedeutet, dass Sie sich noch im Master -Zweig befinden. Sie können sich den Zweig David_Website mit dem folgenden Befehl ansehen:
$ git checkout David_website
Zu Branch "David_Website" umgestellt
Wenn Sie nun die Filialeliste erneut überprüfen, sehen Sie:
$ git branch -list
* David_Website
Meister
Also bist du in der David_Website -Zweigstelle.
Lassen Sie uns den Index ändern.html aus „Hallo Welt! Da ich bin!”Zu„ Hallo Welt! Es ist David!Und dann in die Bühne und begehen Sie es:
$ git add .
$ Git Commit -m "Die Website für David geändert"
Wenn Sie die Protokolle überprüfen, sollten Sie sehen:
$ Git -Protokoll -Einmal
345C0F4 geändert die Website für David
0586662 Modifizierter Index.HTML zu einer glücklicheren Nachricht
F136D22 Begegnung Index.html
Und Ihre Indexdatei sollte so aussehen:
$ cat Index.htmlSchauen wir uns nun den Master -Zweig erneut an:
$ Git Checkout Master
Zum Branch "Master" umgestellt
Wenn Sie den Status überprüfen und sich anmelden:
$ Git Status
Auf Branch Master
Nichts zu begehen, Arbeitsverzeichnis sauber
$ Git -Protokoll -Einmal
0586662 Modifizierter Index.HTML zu einer glücklicheren Nachricht
F136D22 Begegnung Index.html
Beachten Sie, dass Sie Ihren dritten Commit nicht im Meister haben. Weil dieser Commit nur im David_Website -Zweig aufrechterhalten wird.
Das ist, was passiert ist
Nehmen wir in dieser Phase an, dass Sie sich entscheiden, Sie möchten Ihre Website nicht fortsetzen. Sie werden nur der Entwickler für David sein. Sie möchten also die Änderungen im Zweig David_Website zum Meister zusammenführen. In der Master -Zweigstelle müssen Sie nur die folgenden Befehle ausstellen (mit dem Statusbefehl wird überprüft, ob Sie sich am richtigen Ort befinden):
$ Git Status
Auf Branch Master
Nichts zu begehen, Arbeitsverzeichnis sauber
$ git merge David_Website
Aktualisieren von 0586662… 345C0F4
Schnell vorwärts
Index.html | 2 +-
1 Datei geändert, 1 Insertion (+), 1 Löschen (-)
Spitze: Sie ziehen Änderungen von David_Website zu Master an. Sie müssen auf dem Meister sein, um dies zu erreichen.
Wenn Sie nun das Protokoll im Master überprüfen, sehen Sie, dass das dritte Commit da ist:
$ Git -Protokoll -Einmal
345C0F4 geändert die Website für David
0586662 Modifizierter Index.HTML zu einer glücklicheren Nachricht
F136D22 Begegnung Index.html
Sie haben den David_Website -Zweig erfolgreich in den Master zusammengefasst. Und dein Index.HTML für Master Branch sieht identisch aus mit David_Website Branch:
$ cat Index.htmlSie können den David_Website -Zweig behalten:
$ git branch -list
David_Website
* Meister
Oder Sie können es löschen:
$ Git Branch -d David_Website
Löschter Zweig David_Website (war 345c0f4).
Nach dem Löschen sollten Sie den David_Website -Zweig nicht mehr sehen:
$ git branch -list
* Meister
Spitze: Wenn Git während einer Zusammenführung nicht automatisch verschmelzen kann. In diesem Fall müssen Sie die Zusammenführungsprobleme manuell lösen.
Fragen:
Remote -Repository
Bisher war alle Ihre Arbeiten lokal. Sie haben Ihre Änderungen an einem lokalen Repository verpflichtet. Aber es ist Zeit, Ihre Arbeit mit der Welt zu teilen.
Das Git Remote -Repository ist im Grunde eine weitere Kopie Ihres lokalen Repositorys, auf das andere zugegriffen werden können. Sie können einen Server einrichten und es zum Remote -Repository machen. Aber die meisten Menschen verwenden Github oder Bitbucket zu diesem Zweck. Sie können dort kostenlos öffentliche Repositories erstellen, auf die jeder zugreifen kann.
Erstellen wir ein Remote -Repository auf GitHub.
Zuerst müssen Sie ein Github -Konto erstellen []. Sobald Sie das Konto haben, erstellen Sie ein neues Repository mit der Schaltfläche „Neues Repository“. Verwenden Sie "Project_Website" als Repository -Name (Sie können etwas anderes auswählen, wenn Sie möchten).
Sie sollten einen Code -Registerkarte mit solchen Anweisungen sehen:
echo "# project_website" >> readme.md
Git init
Git fügen Sie Readme hinzu.md
Git Commit -m "Erstes Commit"
Git Remote hinzufügen Origin [email protected]: yourusername/project_website.Git
Git Push -u Ursprung Meister
Kopieren Sie den folgenden Befehl "Git Remote Add Adding“ und führen Sie ihn in Ihrem Arbeitsverzeichnis aus:
$ git remote hinzufügen origin [email protected]: yourusername/project_website.Git
HINWEIS: In Ihrem Fall sollte Ihr Susername das sein, was Sie zum Erstellen Ihres Github -Kontos verwendet haben.
Im obigen Befehl haben Sie den Standort des Remote -Repositorys angewiesen. Der Befehl teilt Git mit, dass der "Ursprung" für Ihr Project_Helloworld -Arbeitsverzeichnis "git@github" lautet.com: yourusername/project_website.Git ”.
Drücken Sie nun Ihren Code von Ihrem Master -Zweig zu Origin (Remote -Repository):
$ Git Push Origin Master
Zählen von Objekten: 9, erledigt.
Delta -Komprimierung mit bis zu 4 Fäden.
Komprimierungsobjekte: 100% (6/6), fertiggestellt.
Schreibobjekte: 100% (9/9), 803 Bytes | 0 Bytes/s, fertig.
Gesamt 9 (Delta 2), wiederverwendet 0 (Delta 0)
Fernbedienung: Lösung von Deltas: 100% (2/2), erledigt.
Zu [email protected]: yourusername/project_website.Git
* [neuer Zweig] Master -> Master
Wenn Sie Ihren Browser in GitHub aktualisieren, sollten Sie sehen, dass der Index.Die HTML -Datei ist dort oben. Ihr Code ist also öffentlich und andere Entwickler können den Code im Remote -Repository überprüfen und ändern.
Als Entwickler arbeiten Sie mit dem Code anderer Leute zusammen. Es lohnt sich also, den Code von Github zu überprüfen.
Gehen wir zu einem neuen Verzeichnis, in dem Sie nichts haben. Auf der rechten Seite des Github -Repositorys bemerken Sie die Schaltfläche „Klon oder Download“. Wenn Sie darauf klicken, sollten Sie eine SSH -Adresse geben. Führen Sie den folgenden Befehl mit der SSH -Adresse aus:
$ git klone [email protected]: yourusername/project_website.Git
Die Ausgabe sollte so aussehen:
$ git klone [email protected]: yourusername/project_website.Git
Klonen in 'Project_Website'…
Fernbedienung: Zählen von Objekten: 9, erledigt.
Fernbedienung: Komprimierungsobjekte: 100% (4/4), fertiggestellt.
Fernbedienung: Total 9 (Delta 2), Wiederverwendung 9 (Delta 2), Pack-Resektion 0
Empfangsobjekte: 100% (9/9), erledigt.
Lösung von Deltas: 100% (2/2), erledigt.
Konnektivität überprüfen… erledigt.
Es wird ein Project_Website in Ihrem sauberen Ordner erstellt. Wenn Sie hineingehen, sollten Sie den Index sehen.HTML aus Ihrem Projekt_Helloworld.
Sie haben also Folgendes erreicht:
Lassen Sie uns eine andere Datei aus dem neuen Working Directory Project_Website:
$ touch Readme.md
$ git add .
$ Git Commit -m "fügte Readme hinzu.MD "
$ Git Push Origin Master
Wenn Sie die Seite GitHub Project_Website aktualisieren, sollten Sie das Readme sehen.MD -Datei dort.
Hinweis: Wenn Sie Code von GitHub herunterladen, kennt das Arbeitsverzeichnis den Ursprung automatisch. Sie müssen es nicht mit dem Befehl „Git Remote hinzufügen“ definieren.
Fragen:
Weitere Informationen zu allen Befehlen in den Git -Dokumenten [] finden Sie weiter. Obwohl Git UI-Tools verfügbar sind, ist die Befehlszeile der beste Weg, um Git zu meistern. Es bietet Ihnen eine stärkere Grundlage für Ihre Entwicklungsarbeit.