Lernen Sie die Grundlagen von Git in weniger als 10 Minuten

Ja, der Titel ist ein Clickbait. Es gibt keine Möglichkeit , die Grundlagen der Git-Technologie in nur 10 Minuten zu verstehen . Aber Sie können in etwa 25 Minuten ziemlich nah kommen. Und das ist der Zweck dieses Artikels.

Wenn Sie etwas über die Git-Technologie lernen möchten, sind Sie hier genau richtig. Dies ist eine umfassende Anleitung für Anfänger zu Git. Es gibt viele Clients für Git. Die Technologie ist unabhängig vom Kunden gleich. In diesem Handbuch verwenden wir GitHub, um Git zu verstehen.

Lass uns anfangen!

Was ist Versionskontrolle?

Die Versionskontrolle ist ein System, das Änderungen an einer Datei oder einem Satz von Dateien im Laufe der Zeit aufzeichnet, damit Sie bestimmte Versionen später abrufen können. Im Idealfall können wir also jede Datei auf dem Computer in der Versionskontrolle platzieren.

Ähm ... Okay ... aber warum Tho?

Hier ist der Grund:

Mit einem Versionskontrollsystem (VCS) können Sie Dateien auf einen vorherigen Status zurücksetzen, das gesamte Projekt auf einen vorherigen Status zurücksetzen, im Laufe der Zeit vorgenommene Änderungen überprüfen und feststellen, wer zuletzt etwas geändert hat, das möglicherweise ein Problem verursacht, und wer ein Problem verursacht hat und wann und mehr. Die Verwendung eines VCS bedeutet auch, dass Sie im Allgemeinen problemlos wiederherstellen können, wenn Sie Fehler machen oder Dateien verlieren. Und manchmal möchten Sie einfach nur wissen, wer diesen Mist geschrieben hat , und es lohnt sich, auf diese Informationen zuzugreifen.

Was ist Git?

Git ist ein Versionskontrollsystem zum Verfolgen von Änderungen in Computerdateien und zum Koordinieren der Arbeit an diesen Dateien zwischen mehreren Personen. 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 den vollständigen Verlauf des Projekts auf seiner eigenen Festplatte. Dieser Klon enthält alle Metadaten des Originals, während das Original selbst auf einem selbst gehosteten Server oder einem Hosting-Dienst eines Drittanbieters wie GitHub gespeichert ist.

Git hilft Ihnen dabei , die Änderungen zu verfolgen, die Sie an Ihrem Code vornehmen. Dies ist im Grunde die Registerkarte "Verlauf" für Ihren Code-Editor (ohne Inkognito-Modus?). Wenn Sie zu irgendeinem Zeitpunkt beim Codieren auf einen schwerwiegenden Fehler stoßen und nicht wissen, was ihn verursacht, können Sie jederzeit in den stabilen Zustand zurückkehren. Es ist also sehr hilfreich beim Debuggen. 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 unterschiedliche Versionen derselben Datei. Wir können jederzeit auswählen, welche Version der Datei wir verwenden möchten. So kann ich zu jeder Version der Datei im Git-Zeitkontinuum hin und her springen.

Git hilft Ihnen auch dabei, Code zwischen mehreren Personen zu synchronisieren . Stellen Sie sich vor, Sie und Ihr Freund arbeiten an einem Projekt zusammen. Sie arbeiten beide an denselben Projektdateien. Jetzt nimmt Git die Änderungen, die Sie und Ihr Freund unabhängig voneinander vorgenommen haben, und führt sie zu einem einzigen " Master " -Repository zusammen. Mit Git können Sie also sicherstellen, dass Sie beide an der neuesten Version des Repositorys arbeiten. Sie müssen sich also keine Sorgen machen, dass Sie Ihre Dateien aneinander senden 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, müssen Sie verstehen, was sie darstellen.

Was ist ein Repository?

Ein Repository aka Repo ist nichts anderes als eine Sammlung von Quellcode.

Der Git-Workflow enthält vier grundlegende Elemente.

Arbeitsverzeichnis , Staging-Bereich , lokales Repository und Remote-Repository .

Wenn Sie eine Datei in Ihrem Arbeitsverzeichnis berücksichtigen, kann sie sich in drei möglichen Zuständen befinden.

  1. Es kann inszeniert werden. Dies bedeutet, dass die Dateien mit den aktualisierten Änderungen als für das lokale Repository festgeschrieben, aber noch nicht festgeschrieben markiert sind.
  2. Es kann geändert werden . Dies bedeutet, dass die Dateien mit den aktualisierten Änderungen noch nicht im lokalen Repository gespeichert sind.
  3. Es kann begangen werden . Dies bedeutet, dass die Änderungen, die Sie an Ihrer Datei vorgenommen haben, sicher im lokalen Repository gespeichert werden.
  • git add ist ein Befehl zum Hinzufügen einer Datei im Arbeitsverzeichnis zum Staging-Bereich.
  • git commit ist ein Befehl zum Hinzufügen aller Dateien, die zum lokalen Repository bereitgestellt werden.
  • git pushist ein Befehl, mit dem alle festgeschriebenen Dateien im lokalen Repository zum Remote-Repository hinzugefügt werden. Im Remote-Repository sind alle Dateien und Änderungen für jeden sichtbar, der Zugriff auf das Remote-Repository hat.
  • git fetch ist ein Befehl, mit dem Dateien vom Remote-Repository in das lokale Repository, jedoch nicht in das Arbeitsverzeichnis übertragen werden.
  • git merge ist ein Befehl, mit dem die Dateien aus dem lokalen Repository in das Arbeitsverzeichnis abgerufen werden.
  • git pullMit diesem Befehl werden Dateien aus dem Remote-Repository direkt in das Arbeitsverzeichnis abgerufen. Es ist äquivalent zu a git fetchund a git merge.

Nachdem wir nun wissen, was Git ist und welche grundlegenden Terminologien es gibt, wollen wir sehen, wie wir eine Datei unter git platzieren können . Wir werden es richtig und schwierig machen. Ohne GUI-Anwendungen.

Ich gehe davon aus, dass Sie bereits eine Datei haben, die Sie unter Versionskontrolle stellen möchten. Wenn nicht, erstellen Sie einen Beispielordner mit dem Namen 'MuskCult' und platzieren Sie einige Beispielcodedateien darin.

Schritt 0: Erstellen Sie ein GitHub-Konto. Duh.

Wenn Sie noch keinen haben, können Sie hier einen erstellen.

Schritt 1: Stellen Sie sicher, dass Git auf Ihrem Computer installiert ist.

Wenn Sie einen Mac verwenden , starten Sie das Terminal und geben Sie den folgenden Befehl ein:

$ git --version

Dadurch werden Sie aufgefordert, ein Installationsprogramm zu öffnen, wenn Sie noch kein Git haben. Richten Sie es also mit dem Installationsprogramm ein. Wenn Sie Git bereits haben, wird nur angezeigt, welche Version von Git Sie installiert haben.

Wenn Sie Linux (deb) ausführen, geben Sie Folgendes in das Terminal ein:

$ sudo apt install git-all

Wenn Sie unter Windows arbeiten :

$ get a mac

Nur ein Scherz… Entspann dich… Die Anzahl der Leute, die ich ausgelöst habe… Puh…

Gehen Sie zu diesem Link oder diesem Link, um weitere Informationen zu erhalten.

Schritt 2: Sag Git, wer du bist.

Stelle dich vor. Schieben Sie hinein. Geben Sie im Ernst Ihren Git-Benutzernamen und Ihre E-Mail-Adresse an, da jedes 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: Generieren / überprüfen Sie Ihren Computer auf vorhandene SSH-Schlüssel. (Optional)

Warum fragst du? Mithilfe des SSH-Protokolls können Sie eine Verbindung zu Remote-Servern und -Diensten herstellen und sich authentifizieren . Mit SSH-Schlüsseln können Sie bei jedem Besuch eine Verbindung zu GitHub herstellen, ohne Ihren Benutzernamen oder Ihr Passwort anzugeben.

Folgen Sie diesem Link , um mehr über SSH zu erfahren.

Geh hierherum zu überprüfen, ob Sie einen vorhandenen SSH-Schlüssel haben.

Klicken Sie hier , um einen SSH-Schlüssel zu generieren.

Geh hierherum den SSH-Schlüssel zu Ihrem GitHub-Konto hinzuzufügen.

Und schließlich gehen Sie hierher , um die Verbindung zu testen.

Wenn Sie SSH eingerichtet haben, ersetzen Sie jeden Git-Befehl mit einem Link durch:

Instead of : //github.com/username/reponame
You use : [email protected]/username/reponame.git
 Note : You can use both ways alternatively

In diesem Tutorial werde ich das SSH-Protokoll verwenden.

Schritt 4: Lass uns Git

Erstellen Sie ein neues Repository auf GitHub. Folgen Sie diesem Link.

Suchen Sie nun den Ordner, den Sie in Ihrem Terminal unter git ablegen möchten.

$ cd Desktop/MuskCult

Git initialisieren:

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

Bearbeiten Sie nun die Datei README.md, um Informationen zum Repository bereitzustellen.

Fügen Sie dem Staging-Bereich Dateien zum Festschreiben hinzu:

Fügen Sie nun die Dateien zum Festschreiben zum Git-Repository 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 uns verpflichten, wollen wir sehen, welche Dateien bereitgestellt werden:

$ git status # Lists all new or modified files to be committed

Übernehmen Sie die Änderungen, die Sie an Ihrem Git Repo vorgenommen haben:

Um nun Dateien festzuschreiben, die Sie 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 aufheben, die Sie gerade an Ihrem Git Repo vorgenommen haben:

Angenommen, Sie haben gerade einen Fehler in Ihrem Code gemacht oder eine unerwünschte Datei in das Repository gestellt. Sie können die gerade hinzugefügten Dateien mit folgenden Elementen entfernen:

$ git reset HEAD~1# Remove the most recent commit# Commit again!

Fügen Sie einen Remote-Ursprung hinzu und drücken Sie:

Jedes Mal, wenn Sie Änderungen an Ihren Dateien vornehmen und diese speichern, wird sie nicht automatisch auf GitHub aktualisiert. Alle Änderungen, die wir an der Datei vorgenommen haben, werden im lokalen Repository aktualisiert. So aktualisieren Sie nun die Änderungen am Master:

$ git remote add origin remote_repository_URL# sets the new remote

Mit dem Befehl git remote können Sie Verbindungen zu anderen Repositorys 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 Remoteverbindungen auf, die Sie zu anderen Repositorys haben.

$ git push -u origin master # pushes changes to origin

Jetzt überträgt der Befehl git push die Änderungen in Ihrem lokalen Repository auf das Remote-Repository, das Sie als Ursprung angegeben haben.

Und jetzt, wenn wir unsere Repository-Seite auf GitHub überprüfen, sollte sie ungefähr so ​​aussehen:

Und das ist es. Sie haben die Dateien gerade zu dem Repository hinzugefügt, das Sie gerade auf GitHub erstellt haben.

Siehe die Änderungen, die Sie an Ihrer Datei vorgenommen haben:

Sobald Sie Änderungen an Ihren Dateien vornehmen und diese speichern, stimmt die Datei nicht mehr mit der letzten Version überein, die für git festgeschrieben wurde. So sehen Sie die Änderungen, die Sie gerade vorgenommen haben:

$ git diff # To show the files changes not yet staged

Zurück zur letzten festgeschriebenen Version des Git Repo:

Jetzt können Sie wählen, ob Sie zur zuletzt festgeschriebenen Version zurückkehren möchten, indem Sie Folgendes eingeben:

$ git checkout .
OR for a specific file
$ git checkout -- 

Commit-Verlauf anzeigen:

Mit dem Befehl git log können Sie den Verlauf des Commits anzeigen, den Sie für Ihre Dateien vorgenommen haben:

$ git log

Jedes Mal, wenn Sie Änderungen vornehmen, die in GitHub übernommen werden sollen, sind die folgenden Befehle am häufigsten:

$ 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 jetzt unser Repo ansehen, können wir anhand der Festschreibungsnachricht für jede Datei feststellen, ob das Festschreiben erfolgreich war.

Schritt 5: Das ist alles schön und gut ... Aber wie kann ich andere Repositories auf GitHub herunterladen und bearbeiten?

Klonen eines Git Repo:

Suchen Sie das Verzeichnis, in das Sie das Repo klonen möchten. Kopieren Sie den Link des gewünschten Repositorys und geben Sie Folgendes ein:

$ git clone remote_repository_URL

Fühlen Sie sich frei, das oben erstellte Repo mit //github.com/Gothamv/MuskCult zu klonen

Änderungen am Git Repo verschieben:

Jetzt können Sie an den gewünschten Dateien arbeiten und Änderungen lokal vornehmen. Wenn Sie Änderungen in dieses Repository übertragen möchten, müssen Sie entweder als Mitarbeiter für das Repository hinzugefügt werden oder Sie haben eine sogenannte Pull-Anforderung erstellt. Sehen Sie sich hier an, wie man eine macht, und geben Sie mir eine Pull-Anfrage mit Ihrer Codedatei.

Zusammenarbeit:

Stellen Sie sich vor, Sie und Ihr Freund arbeiten an einem Projekt zusammen. Sie arbeiten beide an denselben Projektdateien. Jedes Mal, wenn Sie einige Änderungen vornehmen und diese in das Master-Repo verschieben, muss Ihr Freund die Änderungen übernehmen, die Sie in das Git-Repo übernommen haben. Um sicherzustellen, dass Sie jedes Mal, wenn Sie mit der Arbeit beginnen, an der neuesten Version des Git-Repos arbeiten, ist ein Git-Pull-Befehl der richtige Weg.

Im Folgenden finden Sie ein Beispiel für ein Projekt, an dem mein Freund und ich zusammenarbeiten:

Um sicherzustellen, dass diese Änderungen in meiner lokalen Kopie des Repos widergespiegelt werden:

$ git pull origin master

Hier sind zwei weitere nützliche Git-Befehle:

$ git fetch AND$ git merge

Im einfachsten Sinne, git fetchgefolgt von a git merge gleich a git pull. Aber warum gibt es diese dann?

Wenn Sie verwenden git pull, versucht Git, Ihre Arbeit automatisch für Sie zu erledigen. Es ist kontextsensitiv , sodass Git alle gezogenen Commits in dem Zweig zusammenführt, in dem Sie gerade arbeiten. git pullDie Commits werden automatisch zusammengeführt, ohne dass Sie sie zuerst überprüfen müssen .

Wenn Sie dies git fetchtun, sammelt Git alle Commits aus dem Zielzweig, die in Ihrem aktuellen Zweig nicht vorhanden sind, und speichert sie in Ihrem lokalen Repository . Sie werden jedoch nicht mit Ihrem aktuellen Zweig zusammengeführt . Dies ist besonders nützlich, wenn Sie Ihr Repository auf dem neuesten Stand halten müssen, aber an etwas arbeiten, das beim Aktualisieren Ihrer Dateien möglicherweise kaputt geht. Um die Commits in Ihren Hauptzweig zu integrieren, verwenden Sie git merge.

Eine Sache noch:

.gitignore

Also, was ist es?

.gitignoreteilt git mit, welche Dateien (oder Muster) ignoriert werden sollen. Es wird normalerweise verwendet, um zu vermeiden, dass vorübergehende Dateien aus Ihrem Arbeitsverzeichnis festgeschrieben werden, die für andere Mitarbeiter nicht nützlich sind, z. B. Kompilierungsprodukte, von IDEs erstellte temporäre Dateien usw.

Im obigen Beispiel werden Dateien wie __pycache__, .DS_Store vom System verwendet, um Informationen für einen schnelleren Zugriff zu speichern. Dies ist für andere Mitarbeiter nicht hilfreich. Wir können git also anweisen, sie zu ignorieren, indem wir eine .gitignoreDatei hinzufügen .

Verwenden Sie den Befehl touch, um die .gitignoreDatei zu erstellen :

$ touch .gitignore

Und Sie können die folgenden Muster hinzufügen, um git anzuweisen, solche Dateien zu ignorieren.

/*.cmake/*.DS_Store/.user/buildetc. depending upon the files you want git to untrack

Und das ist so ziemlich alles für die Grundlagen. Seien Sie gespannt auf Teil 2, der sich auf Branch, Merge, Stash, Rebase usw. konzentriert.

Wenn Ihnen der Artikel gefallen hat, vergessen Sie nicht, diesen Klatschknopf zu zerschlagen, und folgen Sie mir für Teil 2.

Frieden raus ✌️

Verweise :

Hinzufügen eines vorhandenen Projekts zu GitHub über die Befehlszeile - Benutzerdokumentation

Wenn Sie Ihre vorhandene Arbeit auf GitHub stellen, können Sie auf viele großartige Arten teilen und zusammenarbeiten. Wenn Sie Ihre… help.github.com migrieren So machen Sie (fast) alles mit Git rückgängig

Eine der nützlichsten Funktionen eines Versionskontrollsystems ist die Fähigkeit, Ihre Fehler "rückgängig zu machen". In Git "rückgängig machen" ... blog.github.com Git in der Befehlszeile - Haben Sie keine Angst, 0.3-Dokumentation festzuschreiben

Es gibt andere Möglichkeiten, Git zu installieren. Sie können sogar eine grafische Git-Anwendung erhalten, die die Befehlszeile enthält dont-be-afraid-to-commit.readthedocs.io Starten Sie die Verwendung von Git in der Befehlszeile | GitLab

Dokumentation für GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab und GitLab Runner. docs.gitlab.com Was ist der Unterschied zwischen "Git Pull" und "Git Fetch"?

Anmerkung des Moderators: Da auf diese Frage bereits siebenundsechzig Antworten gepostet wurden (von denen einige gelöscht wurden)… stackoverflow.com