GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Howto:Was ist Git und Github? Wie verwende ich es und warum sollte es mich interessieren?

Git wurde 2005 von Linus Torvalds entwickelt, ursprünglich als Versionskontrollsoftware, um es Mitwirkenden besser zu ermöglichen, Code in den Linux-Kernel hochzuladen. Git ist ein Versionskontrollsystem. Wird manchmal als SCM-System (Source Control Management) bezeichnet.

Seitdem ist seine Verwendung weit über das Linux-Ökosystem hinausgewachsen und wird von Millionen von Softwareentwicklern weltweit verwendet (42,9 % aller Softwareentwickler verwenden es gegenüber jedem anderen Versionskontrollsystem). Es ist nicht nur für Softwareentwickler, normale Joes, die Dinge teilen oder speichern möchten, zum Beispiel Konfigurationsdateien oder Websites. Git bietet ihnen einen Ort, an dem sie speichern (und, was noch wichtiger ist, zusammenarbeiten – oder zusammenführen können). ) ihren Inhalt.

Was genau macht es in Laiensprache?

Hier sind zwei Hauptgründe, warum Sie Git verwenden sollten:

  • Zusammenarbeit :Sie möchten an einigen Dateien zusammenarbeiten – z. B. schreibt ein Entwickler eine Codezeile und ein anderer Entwickler zwei Codezeilen. Dies kann wieder mit dem „Git-Server“ „zusammengeführt“ werden, sodass es zu einer Datei wird.
  • Versionskontrolle/-verfolgung :Sie möchten in der Lage sein, die Änderungen zu verfolgen, die die anderen Mitwirkenden vorgenommen haben. Die Nachverfolgungsfunktion zeigt Ihnen, ob es Fehler gibt, die rückgängig gemacht werden müssen.

Ein weiterer Grund ist, dass Sie in einem Job sind, der in irgendeiner Weise Anwendungsentwicklung beinhaltet (z. B. wenn Sie ein Programmierer oder ein Systemadministrator sind, der Änderungen an Ihren Konfigurationsverwaltungsdaten vornehmen oder einfach Entwicklercode klonen muss ) – die Verwendung von Git ist heutzutage das allgemein akzeptierte Versionskontrollsystem. Wenn Sie nicht wissen, wie man es benutzt, werden Sie wahrscheinlich einen Karrierenachteil haben.

Git vs. Github

Ein Git Server  kann auf jedem Linux-Server installiert werden. Der Zugriff darauf erfordert im Allgemeinen die Verwendung des Git Clients , ein Befehlszeilentool. Mehr dazu im folgenden Abschnitt.

Github ist ein weit verbreiteter webbasierter öffentlicher Git-Dienst für die Arbeit an Projekten im Internet. Es ist nicht mit Linus Torvalds oder einem der Git-Projekt-Leute verbunden, es ist eine webbasierte Anpassung eines Git-Servers. Es nutzt alle Hauptkomponenten von Git und bietet über seine Webschnittstelle weitere Erweiterbarkeit. Der Hauptvorteil von Github besteht darin, dass es sich um ein öffentliches Git-Repository handelt, mit dem Sie sich weiterhin über den üblichen Git-Client verbinden können. Github bietet auch private Repository-Dienste an, diese sind jedoch kostenpflichtig.

Es sind auch andere kommerzielle Produkte erhältlich, die einige oder alle Dienste von git implementieren, wie z. B. Atlassian Bitbucket.

Wichtige Terminologie und Befehle

Der Befehl git client wird am Terminal eingegeben und hat eine Reihe von Optionen. Sie werden feststellen, dass git wahrscheinlich bereits auf Ihrem Linux-Rechner installiert ist. Wenn dies nicht der Fall ist, ist es sicher zu erwarten, dass es nur ein apt-get oder eine Yum-Installation entfernt ist.

Die relevantesten davon sind unten aufgeführt. Bewahren Sie dies griffbereit auf, da es als Spickzettel nützlich sein wird während Sie mit Git beginnen:

Befehl Beschreibung
klonen

Erstellt eine Kopie eines Git-Repositorys.

Wenn Sie beispielsweise Dinge von einer GitHub/Git-Site (Repository) herunterladen, verwenden Sie Clone .
zB:git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git

initiieren Initialisiert ein leeres Git-Repository im aktuellen Verzeichnis.
zB:git init /home/mycode
Status

Zeigt den Status des Repositorys an.

Sie werden dies oft tun, damit Sie alle Änderungen am Repository nachverfolgen können.
zB:git status

hinzufügen

Fügt Datei(en) zu einem Staging-Bereich hinzu, sodass Änderungen lokal nachverfolgt werden können.

Teilt git mit, Änderungen für die von Ihnen angegebene Datei zu verfolgen. Beachten Sie, dass dies sie nicht an den Branch übergibt, sondern in einem lokalen Staging-Bereich, z. B.:

git add <filename> hinzu

Um mehrere Dateien/Verzeichnisse hinzuzufügen, benötigen Sie Klammern um Platzhalter herum, sodass git die Liste der Dateien erhält, bevor die Shell mit dem Platzhalter arbeitet. Dieses Beispiel fügt jede .jpg-Datei in allen Verzeichnissen unterhalb des aktuellen Verzeichnisses hinzu (einschließlich des aktuellen Verzeichnisses):

git add '*.jpg'

übernehmen

Übernehmen Sie eine gestufte (hinzugefügte) Änderung.

Eine Änderung festzuschreiben bedeutet „alle diese Hinzufügungen Ich bin fertig, nimm sie aus dem Bereitstellungsbereich und übertrage sie in mein Repository.“ . Es ist zwingend erforderlich, sich mit einer Nachricht zu verpflichten. Die Nachricht sollte beschreiben, wofür der Commit bestimmt ist, z. B. könnten Sie sagen, dass Sie ein paar JPEGs von Katzen hinzugefügt haben.
git commit -m "info about this commit".

entfernt

Konfigurieren Sie ein Remote-Repository, an das Commits übertragen werden sollen.

Alle Änderungen, die Sie lokal festgeschrieben haben, können in ein Remote-Repository hochgeladen werden. Github ist beispielsweise ein Remote-Repository. Um Ihre Remote-Git-Server-Verbindung zu initialisieren, verwenden Sie git remote.

Beispiel: git remote add origin https://github.com/YOUR-USERNAME/your-repository.git

  • Der Name (oder Handle ) „origin“ wird als Referenz für das Remote-Projekt-Repository verwendet. Sie können es beliebig benennen, es ist jedoch üblich, Ihren Hauptnamen "Ursprung" zu nennen.
  • Die your-repository.git Datei wird erstellt, wenn Sie eine Git-Initialisierung durchführen.
drücken

Übertragene Änderungen an ein Remote-Repository übertragen.

Sobald Sie Ihr Remote-Repository initialisiert haben, können Sie die festgeschriebenen Änderungen mit push:
git push -u origin master übertragen

  • ‚origin‘ ist der Name, den Sie für die Remote-Verbindung angegeben haben.
  • „master“ ist der Branch namens master (der primäre Branch. Mehr dazu gleich).
  • Die Option -u weist git an, sich an die von Ihnen angegebenen Parameter zu erinnern, sodass Sie beim nächsten Mal nur noch 'git push' eingeben müssen.
ziehen

Führt Änderungen aus dem Remote-Repository mit Ihrer lokalen Kopie zusammen.

Sobald Personen (oder Sie) weitere Änderungen an das Repository übertragen haben, möchten Sie eine Pull-Anforderung senden, um die Änderungen, die Sie lokal haben, mit dem Upstream-Repository (entfernt) zusammenzuführen.

git pull origin master

unterschied

Zeigt an, welche Unterschiede es seit dem letzten Commit zum Repository gegeben hat.

Wenn Änderungen von mehr als einer Person an das Remote-Repository übertragen werden, gibt es Unterschiede zwischen dem, was Sie lokal gespeichert haben, und dem, was sich auf dem Remote-Server befindet. Unterschiede werden als Diffs bezeichnet . Wenn Sie ziehen , dadurch wird Ihr lokaler

Um die Unterschiede zwischen Ihrem letzten Commit und dem, was im entfernten Repository vorhanden ist, anzuzeigen, können Sie den HEAD-Zeiger verwenden. HEAD ist einfach ein Positionsindikator, standardmäßig zeigt er auf Ihren größten letzten Commits.

git diff HEAD

Die Ausgabe zeigt die Unterschiede zwischen Ihrer Kopie aller geänderten Dateien und der Remote-Kopie (Hinzufügungen und Subtraktionen).

Um Unterschiede zwischen den Dateien in Ihrem Staging anzuzeigen (hinzufügen ed) Bereich und den lokalen Dateien auf Ihrem PC verwenden Sie diff --staged

Zur Kasse

Kehre zu einem früheren Commit zurück oder wechsle die Zweige.

Sagen wir einfach, dass Sie die file.txt übertragen haben, die Ihrer Meinung nach nicht gut war, und Sie zu einer früheren übertragenen Version zurückkehren wollten, Sie würden es wie folgt wiederherstellen:

git checkout -- file.txt

  • Das — sagt einfach, dass es keine weiteren Optionen für den Checkout-Vorgang gibt.

Um einen Zweig zu ändern, geben Sie den Namen des Zweigs an (anstatt das Zeichen — zu verwenden oder einen Dateinamen für die Wiederherstellung anzugeben):

git checkout <branchname>

Zweig

Erstellt eine neue Kopie (Zweig). Der Befehl löscht auch oder listet vorhandene Zweige auf.

Weitere Informationen darüber, was ein „Branch“ ist, finden Sie in der folgenden Terminologie. Das folgende Beispiel erstellt einen neuen Branch namens „newbranch“:

git branch newbranch

Das folgende Beispiel löscht 'newbranch ‘:

git branch -d newbranch

rm

Entfernt Dateien aus dem aktuellen Zweig sowie von der lokalen Festplatte.

Um alle Dateien zu entfernen, verwenden Sie rm genauso wie Sie hinzufügen würden:

git rm '*.txt'

  • Vergessen Sie nicht, zu bestätigen die sich ändern, nachdem Sie den RM ausgestellt haben!
zusammenführen

Führt einen Zweig mit einem anderen zusammen.

Als praktisches Beispiel, Fortsetzung vom rm Im obigen Befehlsbeispiel gehen wir davon aus, dass Sie eine rm *.txt-Datei vom Branch newbranch ausgeführt haben . Wenn Sie diese Änderung mit dem Master zusammenführen möchten Zweig, würden Sie zuerst zurück zum Master wechseln Branch durch Ausgabe von git checkout master,   Verwenden Sie dann den Merge-Befehl, um die Unterschiede von newbranch wieder mit dem aktuellen Branch zusammenzuführen (master ). Die meisten Entwicklerteams arbeiten in separaten Branches an ihrem Code, bevor sie ihn am Ende des Tages in den Master-Branch mergen.

git merge newbranch

zurücksetzen

Kehrt (entfernt) alle inszenierten Änderungen zurück.

Beispiel:Wenn Sie mit git file.txt hinzugefügt haben, aber dann vor dem Commit entscheiden, dass file.txt nicht übergeben werden soll, geben Sie den Reset-Befehl aus, z. B.:git reset Datei.txt

protokollieren

Zeigen Sie ein Journal aller vorgenommenen Änderungen.

Beispiel:git log

Terminologie

Einige Terminologie, die Sie verstehen müssen, ist:

    • Pull-Requests – Wenn ein Team an Codeänderungen arbeitet, wird ein Pull-Request verwendet, um dem Betreuer des Repositorys zu signalisieren, dass er eine neue Änderung zusammenführen soll.
    • Zweig – Ein Zweig ist einfach eine Kopie eines bestehenden Repositorys. Standardmäßig beginnt jedes Repository mit einem „Master ' Zweig. Der Master ist der Name des Hauptzweigs.
      • Der Master-Branch ist normalerweise nicht der Arbeits-Branch, er wird oft als Branch verwendet, wenn alle Entwickler ihren Code fertiggestellt (festgeschrieben) haben. Es wird dann am Ende des Tages aus anderen arbeitenden Zweigen darin zusammengeführt.
    • Fork – Ein Fork ist eine doppelte Kopie des Repositorys einer Person. Es ermöglicht Ihnen, beliebige Änderungen am Code vorzunehmen, ohne das ursprüngliche Projekt/Repository zu beeinträchtigen. Es wird entweder verwendet, um eine neue Anwendung aus der ursprünglichen Codebasis zu erstellen, oder als Arbeitsgrundlage, damit ein Entwickler Änderungen am Projekt vorschlagen kann.
    • Staging – Wenn eine Datei hinzugefügt wird (mit git add) wird gesagt, dass es inszeniert wird oder sich im Staging-Prozess befindet. Wenn Sie die Änderung festschreiben, wird sie nicht mehr bereitgestellt.
      • Das Staging wird auf Ihrem lokalen Rechner gespeichert, nicht in einem entfernten Repository.
      • Nehmen Sie in einem praktischen Beispiel an, Sie haben eine Reihe von Dateien, die sich in einem Remote-Repo befinden

Siehe auch

Die eingebaute Handbuchseite mit dem Namen „gittutorial“ ist ein gut geschriebenes Tutorial, das Sie durch die Vor- und Nachteile der Git-Nutzung führt. Um es anzuzeigen, geben Sie den folgenden Befehl ein:

man 7 gittutorial

Die folgenden Weblinks werden dringend empfohlen:

      • Interaktives Tutorial (trygit)
      • Offizielle Website
      • github-Website

Linux
  1. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  2. Was ist ein cURL-Befehl und wie wird er verwendet?

  3. Redis als Cache:Wie es funktioniert und warum man es verwendet

  4. Wann und warum sollte ich Apt-get Update verwenden?

  5. Warum sollte eval in Bash vermieden werden und was sollte ich stattdessen verwenden?

So installieren und verwenden Sie Git in einem Linux-System

Was ist das Arch User Repository (AUR)? Wie verwende ich AUR unter Arch und Manjaro Linux?

Was sind Firefox Multi-Account-Container? Warum und wie wird es verwendet?

Was ist EasyApache und wie verwende ich es?

Was ist die ONLYOFFICE Community-Funktion und warum sollten Sie sie verwenden?

So installieren und verwenden Sie Git unter Ubuntu 18.04