Lernen Sie die Grundlagen von Git in unter 10 Minuten
von Gowtham Venkatesan
Ja, der Titel ist ein Clickbait. Es ist unmöglich, dass Sie die Grundlagen der Git-Technologie in nur 10 Minuten verstehen können. Aber Sie können in etwa 25 Minuten ziemlich nah herankommen. Und das ist der Zweck dieses Artikels.
Wenn Sie mit dem Erlernen der Git-Technologie beginnen möchten, sind Sie hier genau richtig. Dies ist ein umfassender Leitfaden für Einsteiger in Git. Es gibt viele Clients für Git. Die Technologie ist unabhängig vom Client immer die gleiche. In dieser Anleitung werden wir jedoch GitHub verwenden, um Git zu verstehen.
Lassen Sie uns anfangen!
Was ist Versionskontrolle?
Versionskontrolle ist ein System, das Änderungen an einer Datei oder einer Gruppe von Dateien im Laufe der Zeit aufzeichnet, sodass Sie bestimmte Versionen später wieder aufrufen können. Im Idealfall können wir also jede Datei auf dem Computer unter Versionskontrolle stellen.
Umm… Okay… Aber warum eigentlich?
Hier ist der Grund:
Ein Versionskontrollsystem (VCS) ermöglicht es Ihnen, Dateien auf einen früheren Zustand zurückzusetzen, das gesamte Projekt auf einen früheren Zustand zurückzusetzen, Änderungen im Laufe der Zeit zu überprüfen, zu sehen, wer zuletzt etwas geändert hat, das ein Problem verursachen könnte, wer ein Problem eingeführt hat und wann, und vieles mehr. Ein VCS zu benutzen bedeutet auch, dass wenn Sie etwas vermasseln oder Dateien verlieren, Sie es im Allgemeinen leicht wiederherstellen können. Und manchmal möchte man einfach nur wissen, „wer diesen Mist geschrieben hat“, und der Zugriff auf diese Informationen ist lohnenswert…
Was ist Git?
Git ist ein Versionskontrollsystem, um Änderungen in Computerdateien zu verfolgen und die Arbeit an diesen Dateien unter mehreren Personen zu koordinieren. Git ist ein verteiltes Versionskontrollsystem. Git ist also nicht unbedingt auf einen zentralen Server angewiesen, um alle Versionen der Dateien eines Projekts zu speichern. Stattdessen „klont“ jeder Benutzer eine Kopie eines Repositorys (eine Sammlung von Dateien) und hat die gesamte Historie des Projekts auf seiner eigenen Festplatte. Dieser Klon hat alle Metadaten des Originals, während das Original selbst auf einem selbst gehosteten Server oder einem Drittanbieter-Hosting-Dienst wie GitHub gespeichert ist.
Git hilft Ihnen, die Änderungen an Ihrem Code zu verfolgen. Es ist im Grunde der Verlaufsreiter für Ihren Code-Editor (ohne Inkognito-Modus?). Wenn Sie irgendwann während des Codierens auf einen fatalen Fehler stoßen und nicht wissen, was die Ursache dafür ist, können Sie jederzeit zum stabilen Zustand zurückkehren. Es ist also sehr hilfreich für die Fehlersuche. Oder Sie können einfach sehen, welche Änderungen Sie im Laufe der Zeit an Ihrem Code vorgenommen haben.
Im obigen Beispiel repräsentieren alle drei Karten verschiedene Versionen der gleichen Datei. Wir können zu jedem Zeitpunkt auswählen, welche Version der Datei wir verwenden wollen. Ich kann also zu jeder Version der Datei im Git-Zeitkontinuum hin- und herspringen.
Git hilft Ihnen auch, Code zwischen mehreren Personen zu synchronisieren. Stellen Sie sich also vor, Sie und Ihr Freund arbeiten gemeinsam an einem Projekt. Sie beide arbeiten an denselben Projektdateien. Nun nimmt Git die Änderungen, die Sie und Ihr Freund unabhängig voneinander vorgenommen haben, und führt sie in einem einzigen „Master“-Repository zusammen. Durch die Verwendung von Git können Sie also sicherstellen, dass Sie beide an der aktuellsten Version des Repositorys arbeiten. Sie müssen sich also keine Gedanken darüber machen, dass Sie sich Ihre Dateien gegenseitig zuschicken und mit einer lächerlichen Anzahl von Kopien der Originaldatei arbeiten. Und die Zusammenarbeit über große Entfernungen wird so einfach wie HTML?.
Git Workflow:
Bevor wir mit Git-Befehlen arbeiten, ist es notwendig, dass Sie verstehen, was es darstellt.
Was ist ein Repository?
Ein Repository, auch Repo genannt, ist nichts anderes als eine Sammlung von Quellcode.
Es gibt vier grundlegende Elemente im Git Workflow.
Arbeitsverzeichnis, Staging Area, Lokales Repository und Remote Repository.
Betrachten Sie eine Datei in Ihrem Arbeitsverzeichnis, so kann sie sich in drei möglichen Zuständen befinden.
- Sie kann staged sein. Das bedeutet, dass die Dateien mit den aktualisierten Änderungen für die Übergabe an das lokale Repository markiert sind, aber noch nicht übergeben wurden.
- Sie kann geändert sein. Das bedeutet, dass die Dateien mit den aktualisierten Änderungen noch nicht im lokalen Projektarchiv gespeichert sind.
- Es kann committed werden. Das bedeutet, dass die Änderungen, die Sie an der Datei vorgenommen haben, sicher im lokalen Repository gespeichert sind.
-
git add
ist ein Befehl, mit dem eine Datei, die sich im Arbeitsverzeichnis befindet, dem Staging-Bereich hinzugefügt wird. -
git commit
ist ein Befehl, der verwendet wird, um alle Dateien, die sich im Bereitstellungsbereich befinden, zum lokalen Repository hinzuzufügen. -
git push
ist ein Befehl, der verwendet wird, um alle übergebenen Dateien im lokalen Repository zum Remote-Repository hinzuzufügen. Damit sind im entfernten Repository alle Dateien und Änderungen für jeden sichtbar, der Zugriff auf das entfernte Repository hat. -
git fetch
ist ein Befehl, der verwendet wird, um Dateien aus dem entfernten Repository in das lokale Repository zu holen, aber nicht in das Arbeitsverzeichnis. -
git merge
ist ein Befehl, der verwendet wird, um die Dateien aus dem lokalen Repository in das Arbeitsverzeichnis zu holen. -
git pull
ist ein Befehl, der verwendet wird, um Dateien aus dem entfernten Repository direkt in das Arbeitsverzeichnis zu holen. Es ist äquivalent zu einemgit fetch
und einemgit merge
.
Nun, da wir wissen, was Git ist und was die grundlegenden Begriffe sind, wollen wir sehen, wie wir eine Datei unter Git ablegen können. Wir werden es auf die richtige und die schwierige Art und Weise tun. Ohne jegliche GUI-Anwendungen.
Ich gehe davon aus, dass Sie bereits eine Datei haben, die Sie unter die Versionskontrolle stellen möchten. Falls nicht, erstellen Sie einen Beispielordner mit dem Namen „MuskCult“ und legen Sie einige Beispielcodedateien darin ab.
Schritt 0: Erstellen Sie ein GitHub-Konto.
Wenn Sie noch keinen haben, können Sie hier einen erstellen.
Schritt 1: Stellen Sie sicher, dass Sie Git auf Ihrem Rechner installiert haben.
Wenn Sie einen Mac verwenden, starten Sie das Terminal und geben Sie folgenden Befehl ein:
$ git --version
Dies wird Sie auffordern, ein Installationsprogramm zu öffnen, wenn Sie Git noch nicht haben. Richten Sie es also mithilfe des Installers ein. Wenn Sie Git bereits haben, zeigt es Ihnen nur an, welche Version von Git Sie installiert haben.
Wenn Sie unter Linux(deb) arbeiten, geben Sie Folgendes in das Terminal ein:
$ sudo apt install git-all
Wenn Sie unter Windows arbeiten:
$ get a mac
Ein Scherz… Entspannen Sie sich… Die Menge an Leuten, die ich ausgelöst habe… Puh…
Gehen Sie zu diesem Link oder diesem Link für weitere Informationen, wie Sie es bekommen.
Schritt 2: Sagen Sie Git, wer Sie sind.
Stellen Sie sich vor. Rutschen Sie rein. Erwähnen Sie ernsthaft Ihren Git-Benutzernamen und Ihre E-Mail-Adresse, da jeder Git-Commit diese Informationen verwendet, um Sie als Autor zu identifizieren.
$ git config --global user.name "YOUR_USERNAME"
$ git config --global user.email "[email protected]"
$ git config --global --list # To check the info you just provided
Schritt 3: Erzeugen/überprüfen Sie Ihren Rechner auf vorhandene SSH-Schlüssel. (Optional)
Warum fragen Sie? Mit dem SSH-Protokoll können Sie eine Verbindung zu entfernten Servern und Diensten herstellen und sich dort authentifizieren. Mit SSH-Schlüsseln können Sie eine Verbindung zu GitHub herstellen, ohne bei jedem Besuch Ihren Benutzernamen oder Ihr Kennwort eingeben zu müssen.
Folgen Sie diesem Link, um mehr über SSH zu erfahren.
Gehen Sie hier, um zu prüfen, ob Sie einen vorhandenen SSH-Schlüssel haben.
Gehen Sie hier, um einen SSH-Schlüssel zu generieren.
Gehen Sie hier, um den SSH-Schlüssel zu Ihrem GitHub-Konto hinzuzufügen.
Und schließlich gehen Sie hier, um die Verbindung zu testen.
Wenn Sie SSH eingerichtet haben, ersetzen Sie jeden Git-Befehl, der einen Link enthält, durch:
Instead of : https://github.com/username/reponame
You use : [email protected]/username/reponame.git
Note : You can use both ways alternatively
In dieser Anleitung werde ich das SSH-Protokoll verwenden.
Schritt 4: Let’s Git
Erstellen Sie ein neues Repository auf GitHub. Folgen Sie diesem Link.
Suchen Sie nun in Ihrem Terminal den Ordner, den Sie unter git ablegen möchten.
$ cd Desktop/MuskCult
Initialisieren Sie Git:
Und um es unter Git zu platzieren, geben Sie ein:
$ touch README.md # To create a README file for the repository$ git init # Initiates an empty git repository
Nun bearbeiten Sie die README.md-Datei, um Informationen über das Repository bereitzustellen.
Dateien zum Staging-Bereich für die Übergabe hinzufügen:
Nun fügen Sie die Dateien zum Git-Repository für die Übergabe hinzu:
$ git add . # Adds all the files in the local repository and stages them for commit
OR if you want to add a specific file
$ git add README.md # To add a specific file
Bevor wir die Übergabe durchführen, lassen Sie uns sehen, welche Dateien bereitgestellt werden:
$ git status # Lists all new or modified files to be committed
Änderungen, die Sie an Ihrem Git-Repo vorgenommen haben, committen:
Nun geht es darum, die Dateien zu committen, die Sie zu Ihrem Git-Repo hinzugefügt haben:
$ git commit -m "First commit"# The message in the " " is given so that the other users can read the message and see what changes you made
Änderungen, die Sie soeben an Ihrem Git Repo vorgenommen haben, rückgängig machen:
Angenommen, Sie haben gerade einen Fehler in Ihrem Code gemacht oder eine unerwünschte Datei im Repository platziert, dann können Sie die Dateien, die Sie soeben hinzugefügt haben, rückgängig machen:
$ git reset HEAD~1# Remove the most recent commit# Commit again!
Hinzufügen eines Remote-Ursprungs und Push:
Nun wird jedes Mal, wenn Sie Änderungen an Ihren Dateien vornehmen und diese speichern, diese nicht automatisch auf GitHub aktualisiert. Alle Änderungen, die wir in der Datei vorgenommen haben, werden im lokalen Repository aktualisiert. Um nun die Änderungen im Master zu aktualisieren:
$ git remote add origin remote_repository_URL# sets the new remote
Mit dem Befehl git remote können Sie Verbindungen zu anderen Repositories erstellen, anzeigen und löschen.
$ git remote -v# List the remote connections you have to other repositories.
Der Befehl git remote -v listet die URLs der Fernverbindungen auf, die Sie zu anderen Repositories haben.
$ git push -u origin master # pushes changes to origin
Nun schiebt der Befehl git push die Änderungen in Ihrem lokalen Repository nach oben in das entfernte Repository, das Sie als Ursprung angegeben haben.
Und wenn wir jetzt unsere Repository-Seite auf GitHub aufrufen, sollte sie etwa so aussehen:
Und das war’s. Sie haben soeben die Dateien zu dem Repository hinzugefügt, das Sie gerade auf GitHub erstellt haben.
Sehen Sie die Änderungen, die Sie an Ihrer Datei vorgenommen haben:
Wenn Sie Änderungen an Ihren Dateien vornehmen und diese speichern, entspricht die Datei nicht mehr der letzten Version, die an Git übergeben wurde. Um die Änderungen zu sehen, die Sie gerade vorgenommen haben:
$ git diff # To show the files changes not yet staged
Zurück zur letzten an das Git Repo übergebenen Version:
Nun können Sie wählen, ob Sie zur letzten übertragenen Version zurückkehren wollen:
$ git checkout .
OR for a specific file
$ git checkout -- <filename>
View Commit History:
Mit dem Befehl git log können Sie die Historie der Commits einsehen, die Sie an Ihren Dateien vorgenommen haben:
$ git log
Jedes Mal, wenn Sie Änderungen vornehmen, die auf GitHub angezeigt werden sollen, sind die folgenden Befehle am häufigsten zu finden:
$ git add .$ git status # Lists all new or modified files to be committed$ git commit -m "Second commit"$ git push -u origin master
Wenn wir uns nun unser Repo ansehen, können wir anhand der Commit-Nachricht für jede Datei erkennen, ob der Commit erfolgreich war.
Schritt 5: Das ist alles schön und gut… Aber wie lade ich andere Repositories auf GitHub herunter und bearbeite sie?
Klonen eines Git-Repos:
Gehen Sie in das Verzeichnis, in das Sie das Repo klonen möchten. Kopieren Sie den Link des gewünschten Repositories und geben Sie Folgendes ein:
$ git clone remote_repository_URL
Fühlen Sie sich frei und klonen Sie das Repo, das ich oben erstellt habe, mit: https://github.com/Gothamv/MuskCult
Änderungen in das Git-Repo pushen:
Jetzt können Sie an den gewünschten Dateien arbeiten und Änderungen lokal übertragen. Wenn Sie Änderungen an das Repository weitergeben wollen, müssen Sie entweder als Kollaborateur für das Repository hinzugefügt werden, oder Sie müssen eine sogenannte Pull-Anfrage erstellen. Schauen Sie sich hier an, wie das geht und stellen Sie einen Pull Request mit Ihrer Code-Datei.
Zusammenarbeit:
Stellen Sie sich also vor, Sie und Ihr Freund arbeiten gemeinsam an einem Projekt. Sie beide arbeiten an denselben Projektdateien. Jedes Mal, wenn Sie Änderungen vornehmen und diese in das Master Repo schieben, muss Ihr Freund die Änderungen, die Sie in das Git Repo geschoben haben, ziehen. Das heißt, um sicherzustellen, dass Sie jedes Mal, wenn Sie mit der Arbeit beginnen, an der neuesten Version des Git-Repo arbeiten, ist ein Git-Pull-Befehl der richtige Weg.
Nun ist unten ein Beispiel für ein Projekt, an dem mein Freund und ich zusammenarbeiten:
Um sicherzustellen, dass diese Änderungen in meiner lokalen Kopie der Repo reflektiert werden:
$ git pull origin master
Hier sind zwei weitere nützliche Git-Befehle:
$ git fetch AND$ git merge
Im einfachsten Fall ist ein git fetch
gefolgt von einem git merge
gleich einem git pull
. Aber warum gibt es diese dann?
Wenn Sie git pull
verwenden, versucht Git, die Arbeit automatisch für Sie zu erledigen. Es ist kontextsensitiv, so dass Git alle gezogenen Commits in den Zweig zusammenführt, in dem Sie gerade arbeiten. git pull
führt die Commits automatisch zusammen, ohne Sie vorher überprüfen zu lassen.
Wenn Sie git fetch
ziehen, sammelt Git alle Commits aus dem Zielzweig, die nicht in Ihrem aktuellen Zweig vorhanden sind, und speichert sie in Ihrem lokalen Repository. Es führt sie jedoch nicht mit Ihrem aktuellen Zweig zusammen. Dies ist besonders nützlich, wenn Sie Ihr Repository auf dem neuesten Stand halten müssen, aber an etwas arbeiten, das bei einer Aktualisierung der Dateien kaputt gehen könnte. Um die Commits in Ihren Master-Zweig zu integrieren, verwenden Sie git merge
.
One More Thing:
.gitignore
So what is it?
.gitignore
sagt Git, welche Dateien (oder Muster) es ignorieren soll. Es wird normalerweise verwendet, um zu vermeiden, dass flüchtige Dateien aus Ihrem Arbeitsverzeichnis übertragen werden, die für andere Mitarbeiter nicht nützlich sind, wie z.B. Kompilierprodukte, temporäre Dateien, die IDEs erzeugen, usw.
Im obigen Beispiel werden also Dateien wie __pycache__, .DS_Store vom System verwendet, um Informationen für einen schnelleren Zugriff zu speichern. Dies ist für andere Mitarbeiter nicht nützlich. Also können wir Git sagen, dass es sie ignorieren soll, indem wir eine .gitignore
Datei hinzufügen.
Verwenden Sie den touch-Befehl, um die .gitignore
Datei zu erstellen:
$ touch .gitignore
Und Sie können die folgenden Muster hinzufügen, um Git zu sagen, dass es solche Dateien ignorieren soll.
/*.cmake/*.DS_Store/.user/buildetc. depending upon the files you want git to untrack
Und das war’s auch schon mit den Grundlagen. Bleiben Sie dran für Teil 2, in dem es um Branch, Merge, Stash, Rebase usw. geht.
Wenn Ihnen der Artikel gefallen hat, vergessen Sie nicht, den Klatschen-Knopf zu drücken und stellen Sie sicher, dass Sie mir für Teil 2 folgen.
Referenzen :
Ein bestehendes Projekt über die Kommandozeile zu GitHub hinzufügen – Benutzerdokumentation
Das Einstellen Ihrer bestehenden Arbeit auf GitHub kann Ihnen viele Möglichkeiten zur gemeinsamen Nutzung und Zusammenarbeit bieten. Wenn Sie Ihre…help.github.comWie Sie mit Git (fast) alles rückgängig machen können
Eine der nützlichsten Funktionen eines jeden Versionskontrollsystems ist die Möglichkeit, Ihre Fehler „rückgängig“ zu machen. In Git ist das „Rückgängigmachen“…blog.github.comGit auf der Kommandozeile – Haben Sie keine Angst, zu committen 0.3 Dokumentation
Es gibt auch andere Möglichkeiten, Git zu installieren; Sie können sogar eine grafische Git-Anwendung erhalten, die die Kommandozeile…dont-be-afraid-to-commit.readthedocs.ioStart using Git on the command line | GitLab
Dokumentation für GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab und GitLab Runner.docs.gitlab.comWas ist der Unterschied zwischen ‚git pull‘ und ‚git fetch‘?
Anmerkung des Moderators: Da auf diese Frage bereits siebenundsechzig Antworten gepostet wurden (einige davon gelöscht)…stackoverflow.com