GitErste Schritte mit Git

Bemerkungen

Git ist ein kostenloses, verteiltes Versionskontrollsystem, mit dem Programmierer Codeänderungen über "Momentaufnahmen" (Commits) im aktuellen Status verfolgen können. Durch die Verwendung von Commits können Programmierer gemeinsam Funktionen testen, debuggen und neue Funktionen erstellen. Alle Commits werden in einem so genannten "Git-Repository" aufbewahrt, das auf Ihrem Computer, privaten Servern oder Open-Source-Websites wie Github gehostet werden kann.

Mit Git können Benutzer außerdem neue "Verzweigungen" des Codes erstellen, wodurch verschiedene Versionen des Codes nebeneinander leben können. Dies ermöglicht Szenarien, in denen ein Zweig die aktuellste stabile Version enthält, ein anderer Zweig eine Reihe neuer Features enthält, die entwickelt werden, und ein weiterer Zweig enthält einen anderen Satz von Funktionen. Git macht den Prozess, diese Zweige zu erstellen und sie anschließend wieder zusammenzufügen, fast schmerzlos.

Git hat 3 verschiedene "Bereiche" für Ihren Code:

  • Arbeitsverzeichnis : Der Bereich, in dem Sie Ihre gesamte Arbeit erledigen werden (Erstellen, Bearbeiten, Löschen und Organisieren von Dateien).
  • Bereitstellungsbereich : Der Bereich, in dem Sie die Änderungen auflisten, die Sie am Arbeitsverzeichnis vorgenommen haben
  • Repository : Hier speichert Git die von Ihnen vorgenommenen Änderungen dauerhaft in verschiedenen Versionen des Projekts

Git wurde ursprünglich zur Verwaltung der Linux-Kernel-Quelle erstellt. Durch die Vereinfachung ermutigen sie kleine Commits, fälschen von Projekten und verschmelzen zwischen den Gabeln und haben viele kurzlebige Zweige.

Die größte Änderung für Menschen, die an CVS oder Subversion gewöhnt sind, ist, dass jeder Checkout nicht nur den Quellbaum, sondern auch den gesamten Verlauf des Projekts enthält. Übliche Vorgänge wie das Vergleichen von Revisionen, das Auschecken älterer Revisionen, das Festschreiben (an Ihre lokale Historie), das Erstellen einer Verzweigung, das Auschecken einer anderen Verzweigung, das Zusammenführen von Verzweigungen oder Patchdateien können lokal erfolgen, ohne dass Sie mit einem zentralen Server kommunizieren müssen. Damit ist die größte Quelle für Latenz und Unzuverlässigkeit beseitigt. Die Kommunikation mit dem "Upstream" -Repository ist nur erforderlich, um die neuesten Änderungen zu erhalten und die lokalen Änderungen für andere Entwickler zu veröffentlichen. Dies macht aus einer technischen Einschränkung (wer auch immer das Projekt das Projekt besitzt) eine organisatorische Entscheidung (Ihr "Upstream" ist derjenige, mit dem Sie synchronisieren möchten).

Versionen

Ausführung Veröffentlichungsdatum
2.13 2017-05-10
2.12 2017-02-24
2.11.1 2017-02-02
2.11 2016-11-29
2.10.2 2016-10-28
2.10 2016-09-02
2,9 2016-06-13
2.8 2016-03-28
2,7 2015-10-04
2.6 2015-09-28
2,5 2015-07-27
2.4 2015-04-30
2.3 2015-02-05
2.2 2014-11-26
2.1 2014-08-16
2,0 2014-05-28
1,9 2014-02-14
1.8.3 2013-05-24
1.8 2012-10-21
1.7.10 2012-04-06
1.7 2010-02-13
1.6.5 2009-10-10
1.6.3 2009-05-07
1.6 2008-08-17
1.5.3 2007-09-02
1,5 2007-02-14
1.4 2006-06-10
1.3 2006-04-18
1.2 2006-02-12
1.1 2006-01-08
1,0 2005-12-21
0,99 2005-07-11

Erstellen Sie Ihr erstes Repository, fügen Sie dann Dateien hinzu und legen Sie sie fest

Überprüfen Sie zunächst in der Befehlszeile, ob Sie Git installiert haben:

Auf allen Betriebssystemen:

git --version

Auf UNIX-ähnlichen Betriebssystemen:

which git

Wenn nichts zurückgegeben wird oder der Befehl nicht erkannt wird, müssen Sie möglicherweise Git auf Ihrem System installieren, indem Sie das Installationsprogramm herunterladen und ausführen. Auf der Git-Homepage finden Sie außergewöhnlich klare und einfache Installationsanweisungen.

Konfigurieren Sie nach der Installation von Git Ihren Benutzernamen und Ihre E-Mail-Adresse . Tun Sie dies, bevor Sie ein Commit ausführen.

Navigieren Sie nach der Installation von Git zu dem Verzeichnis, das Sie der Versionskontrolle zuordnen möchten, und erstellen Sie ein leeres Git-Repository:

git init

Dadurch wird ein versteckter Ordner, .git , erstellt, der die für Git funktionierenden Rohrleitungen enthält.

Prüfen Sie anschließend, welche Dateien Git Ihrem neuen Repository hinzufügen wird. Dieser Schritt ist besondere Sorgfalt wert:

git status

Überprüfen Sie die Ergebnisliste der Dateien. Sie können Git mitteilen, welche der Dateien in die Versionskontrolle eingefügt werden soll (vermeiden Sie das Hinzufügen von Dateien mit vertraulichen Informationen wie Kennwörter oder Dateien, die das Repo nur durcheinanderbringen)

git add <file/directory name #1> <file/directory name #2> < ... >

Wenn alle Dateien in der Liste für alle Benutzer freigegeben werden sollen, die Zugriff auf das Repository haben, wird ein einzelner Befehl alles in Ihr aktuelles Verzeichnis und dessen Unterverzeichnisse hinzufügen:

git add .

Dadurch werden alle Dateien "in Stufe" versetzt , die der Versionskontrolle hinzugefügt werden, um sie für den ersten Commit vorzubereiten.

Erstellen Sie für Dateien, die Sie niemals unter Versionskontrolle haben möchten, eine Datei mit dem Namen .gitignore bevor Sie den Befehl add .gitignore .

Übertragen Sie alle hinzugefügten Dateien zusammen mit einer Commit-Nachricht:

git commit -m "Initial commit"

Dadurch wird ein neues Commit mit der angegebenen Nachricht erstellt. Ein Commit ist wie eine Sicherung oder Momentaufnahme Ihres gesamten Projekts. Sie können es jetzt in ein Remote-Repository pushen oder hochladen, und später können Sie bei Bedarf darauf zurückspringen.
Wenn Sie den Parameter -m angeben, wird Ihr Standardeditor geöffnet, und Sie können die Festschreibungsnachricht dort bearbeiten und speichern.

Fernbedienung hinzufügen

Um eine neue Fernbedienung hinzuzufügen, verwenden Sie den Befehl git remote add im Terminal, in dem sich Ihr Repository befindet.

Der Befehl git remote add benötigt zwei Argumente:

  1. Ein entfernter Name, z. B. origin
  2. Eine entfernte URL, zum Beispiel https://<your-git-service-address>/user/repo.git
    git remote add origin https://<your-git-service-address>/owner/repository.git

HINWEIS: Bevor Sie die Fernbedienung hinzufügen, müssen Sie das erforderliche Repository in Ihrem git-Dienst erstellen. Nach dem Hinzufügen der Fernbedienung können Sie Commits per Push / Pull übertragen.

Klonen Sie ein Repository

Der Befehl git clone wird verwendet, um ein vorhandenes Git-Repository von einem Server auf den lokalen Computer zu kopieren.

So kopieren Sie beispielsweise ein GitHub-Projekt:

cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git

So klonen Sie ein BitBucket-Projekt:

cd <path where you'd like the clone to create a directory>
git clone https://yourusername@bitbucket.org/username/projectname.git

Dadurch wird auf dem lokalen Computer ein Verzeichnis mit dem Namen projectname erstellt, das alle Dateien im fernen Git-Repository enthält. Dazu gehören Quelldateien für das Projekt sowie ein .git Unterverzeichnis, das die gesamte Historie und Konfiguration für das Projekt enthält.

Um einen anderen Namen des Verzeichnisses anzugeben, z. B. MyFolder :

git clone https://github.com/username/projectname.git MyFolder

Oder im aktuellen Verzeichnis klonen:

git clone https://github.com/username/projectname.git .

Hinweis:

  1. Beim Klonen in ein angegebenes Verzeichnis muss das Verzeichnis leer oder nicht vorhanden sein.

  2. Sie können auch die ssh Version des Befehls verwenden:

    git clone git@github.com:username/projectname.git
    

Die https Version und die ssh Version sind gleichwertig. Einige Hosting-Dienste wie GitHub empfehlen jedoch die Verwendung von https anstelle von ssh .

Upstream-Fernbedienung einrichten

Wenn Sie einen Fork geklont haben (z. B. ein Open-Source-Projekt auf Github), haben Sie möglicherweise keinen Push-Zugriff auf das Upstream-Repository. Sie benötigen also sowohl Ihren Fork als auch das Upstream-Repository.

Überprüfen Sie zuerst die Namen der Fernbedienung:

$ git remote -v
origin    https://github.com/myusername/repo.git (fetch)
origin    https://github.com/myusername/repo.git (push)
upstream  # this line may or may not be here

Wenn upstream bereits vorhanden ist (es gibt einige Git-Versionen), müssen Sie die URL festlegen (derzeit ist sie leer):

$ git remote set-url upstream https://github.com/projectusername/repo.git

Wenn der Upstream nicht vorhanden ist oder wenn Sie auch die Gabel eines Freundes / Kollegen hinzufügen möchten (derzeit sind diese nicht vorhanden):

$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git

Code teilen

Um Ihren Code freizugeben, erstellen Sie ein Repository auf einem Remote-Server, auf den Sie Ihr lokales Repository kopieren.

Um den Speicherplatz auf dem Remote-Server zu minimieren, erstellen Sie ein einfaches Repository: eines, das nur die .git Objekte enthält und keine Arbeitskopie im Dateisystem erstellt. Als Bonus haben Sie diese Fernbedienung als Upstream-Server festgelegt, um Updates problemlos mit anderen Programmierern gemeinsam zu nutzen.

Auf dem Remote-Server:

git init --bare /path/to/repo.git

Auf dem lokalen Rechner:

git remote add origin ssh://username@server:/path/to/repo.git

(Beachten Sie, dass ssh: nur eine Möglichkeit ist, auf das Remote-Repository zuzugreifen.)

Kopieren Sie nun Ihr lokales Repository in das Remote:

git push --set-upstream origin master

Hinzufügen --set-upstream (oder -u ) erstellt eine stromaufwärtige (tracking) Referenz , die durch das Argument verwendet wird losen Git Befehle, zB git pull .

Festlegen Ihres Benutzernamens und Ihrer E-Mail

You need to set who you are *before* creating any commit.  That will allow commits to have the right author name and email associated to them.

Es hat nichts mit Authentifizierung zu tun, wenn Sie zu einem Remote-Repository wechseln (z. B. wenn Sie mit Ihrem GitHub-, BitBucket- oder GitLab-Konto zu einem Remote-Repository wechseln).

Um diese Identität für alle Repositorys git config --global , verwenden Sie git config --global
Dadurch wird die Einstellung in der .gitconfig Datei Ihres Benutzers gespeichert: z. B. $HOME/.gitconfig oder für Windows %USERPROFILE%\.gitconfig .

git config --global user.name "Your Name"
git config --global user.email mail@example.com

Um eine Identität für ein einzelnes Repository zu deklarieren, verwenden Sie git config innerhalb eines Repos.
Dadurch wird die Einstellung im einzelnen Repository in der Datei $GIT_DIR/config . zB /path/to/your/repo/.git/config .

cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email mail_at_work@example.com

In der Konfigurationsdatei eines Repositorys gespeicherte Einstellungen haben Vorrang vor der globalen Konfiguration, wenn Sie dieses Repository verwenden.


Tipps: Wenn Sie unterschiedliche Identitäten haben (eine für Open-Source-Projekte, eine für die Arbeit, eine für private Repos, ...), und Sie nicht vergessen möchten, für jedes Repo, an dem Sie arbeiten, die richtige zu wählen :

  • Entfernen Sie eine globale Identität

    git config --global --remove-section user.name
    git config --global --remove-section user.email
    
2.8
  • Um zu erzwingen, dass git nur in den Einstellungen eines Repositorys nach Ihrer Identität sucht, nicht in der globalen Konfiguration:

      git config --global user.useConfigOnly true
    

Wenn Sie also vergessen, user.name und user.email für ein bestimmtes Repository user.name und ein Commit user.email user.name user.email :

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled

Einen Befehl kennenlernen

Um weitere Informationen zu jedem git-Befehl zu erhalten, z. B. Details zu den Funktionen des Befehls, verfügbaren Optionen und anderer Dokumentation, verwenden Sie die Option --help oder den Befehl help .

Um beispielsweise alle verfügbaren Informationen zum Befehl git diff , verwenden Sie:

git diff --help
git help diff

Um alle verfügbaren Informationen zum status abzurufen, verwenden Sie Folgendes:

git status --help
git help status

Wenn Sie nur eine schnelle Hilfe benötigen, um die Bedeutung der am häufigsten verwendeten Befehlszeilenflags anzuzeigen, verwenden Sie -h :

git checkout -h

Richten Sie SSH für Git ein

Wenn Sie Windows verwenden, öffnen Sie Git Bash . Wenn Sie Mac oder Linux verwenden, öffnen Sie Ihr Terminal.

Bevor Sie einen SSH-Schlüssel generieren, können Sie prüfen, ob bereits vorhandene SSH-Schlüssel vorhanden sind.

Listen Sie den Inhalt Ihres ~/.ssh Verzeichnisses auf:

$ ls -al ~/.ssh 
# Lists all the files in your ~/.ssh directory

Überprüfen Sie die Verzeichnisliste, um festzustellen, ob Sie bereits über einen öffentlichen SSH-Schlüssel verfügen. Standardmäßig sind die Dateinamen der öffentlichen Schlüssel eine der folgenden:

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

Wenn ein vorhandenes Paar aus öffentlichen und privaten Schlüsseln angezeigt wird, das Sie in Ihrem Bitbucket-, GitHub-Konto (oder einem ähnlichen Konto) verwenden möchten, können Sie den Inhalt der id_*.pub Datei kopieren.

Wenn nicht, können Sie mit dem folgenden Befehl ein neues öffentliches und privates Schlüsselpaar erstellen:

$ ssh-keygen

Drücken Sie die Eingabetaste, um den Standardspeicherort zu übernehmen. Geben Sie eine Passphrase ein und geben Sie sie erneut ein, wenn Sie dazu aufgefordert werden, oder lassen Sie sie leer.

Stellen Sie sicher, dass Ihr SSH-Schlüssel zum ssh-agent hinzugefügt wird. Starten Sie den ssh-agent im Hintergrund, falls er noch nicht läuft:

$ eval "$(ssh-agent -s)"

Fügen Sie Ihren SSH-Schlüssel zum ssh-agent hinzu. Beachten Sie, dass Sie id_rsa im Befehl durch den Namen Ihrer privaten Schlüsseldatei ersetzen id_rsa :

$ ssh-add ~/.ssh/id_rsa

Wenn Sie den Upstream eines vorhandenen Repositorys von HTTPS zu SSH ändern möchten, können Sie den folgenden Befehl ausführen:

$ git remote set-url origin ssh://git@bitbucket.server.com:7999/projects/your_project.git

Um ein neues Repository über SSH zu klonen, können Sie den folgenden Befehl ausführen:

$ git clone ssh://git@bitbucket.server.com:7999/projects/your_project.git

Git Installation

Lass uns etwas Git benutzen. Das Wichtigste zuerst - Sie müssen es installieren. Sie können es auf verschiedene Arten bekommen; Die beiden wichtigsten sind die Installation von der Quelle oder die Installation eines vorhandenen Pakets für Ihre Plattform.

Installation von der Quelle

Wenn Sie können, ist es generell sinnvoll, Git von Source zu installieren, da Sie die aktuellste Version erhalten. Jede Version von Git enthält in der Regel nützliche Verbesserungen der Benutzeroberfläche. Die neueste Version ist daher oft die beste Route, wenn Sie sich beim Erstellen einer Software nach dem Quellcode wohl fühlen. Es ist auch so, dass viele Linux-Distributionen sehr alte Pakete enthalten. Wenn Sie sich also nicht auf einer sehr aktuellen Distribution befinden oder Backports verwenden, ist die Installation von der Quelle möglicherweise die beste Wahl.

Zur Installation von Git benötigen Sie die folgenden Bibliotheken, auf die Git angewiesen ist: curl, zlib, openssl, expat und libiconv. Wenn Sie sich beispielsweise auf einem System mit yum (wie Fedora) oder apt-get (wie einem Debian-basierten System) befinden, können Sie alle diese Abhängigkeiten mit einem der folgenden Befehle installieren:

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

Wenn Sie alle notwendigen Abhängigkeiten haben, können Sie den neuesten Schnappschuss von der Git-Website abrufen:

http://git-scm.com/download Kompilieren und installieren Sie dann:

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

Nachdem dies erledigt ist, können Sie Git über Git selbst für Updates erhalten:

$ git clone git://git.kernel.org/pub/scm/git/git.git

Installation unter Linux

Wenn Sie Git über ein binäres Installationsprogramm unter Linux installieren möchten, können Sie dies in der Regel über das grundlegende Paketverwaltungstool Ihrer Distribution tun. Wenn Sie auf Fedora sind, können Sie yum verwenden:

$ yum install git

Wenn Sie sich in einer Debian-basierten Distribution wie Ubuntu befinden, versuchen Sie apt-get:

$ apt-get install git

Installation auf dem Mac

Es gibt drei einfache Möglichkeiten, Git auf einem Mac zu installieren. Am einfachsten ist es, das grafische Git-Installationsprogramm zu verwenden, das Sie von der SourceForge-Seite herunterladen können.

http://sourceforge.net/projects/git-osx-installer/

Abbildung 1-7. Git OS X-Installationsprogramm. Die andere Möglichkeit ist, Git über MacPorts ( http://www.macports.org) zu installieren. Wenn Sie MacPorts installiert haben, installieren Sie Git via

$ sudo port install git +svn +doc +bash_completion +gitweb

Sie müssen nicht alle Extras hinzufügen, Sie sollten jedoch + svn hinzufügen, falls Sie Git mit Subversion-Repositorys verwenden müssen (siehe Kapitel 8).

Homebrew ( http://brew.sh/) ist eine weitere Alternative zur Installation von Git. Wenn Sie Homebrew installiert haben, installieren Sie Git via

$ brew install git

Installation unter Windows

Die Installation von Git unter Windows ist sehr einfach. Das msysGit-Projekt hat eine der einfacheren Installationsprozeduren. Laden Sie einfach die Installer-Exe-Datei von der GitHub-Seite herunter und führen Sie sie aus:

http://msysgit.github.io

Nach der Installation haben Sie sowohl eine Befehlszeilenversion (einschließlich eines SSH-Clients, der sich später als nützlich erweisen wird) als auch die Standard-GUI.

Hinweis zur Verwendung von Windows: Sie sollten Git mit der mitgelieferten msysGit-Shell (Unix-Stil) verwenden. Sie ermöglicht die Verwendung der komplexen Befehlszeilen in diesem Buch. Wenn Sie aus irgendeinem Grund die native Windows-Shell- / Befehlszeilenkonsole verwenden müssen, müssen Sie Anführungszeichen anstelle von einfachen Anführungszeichen verwenden (für Parameter mit Leerzeichen) und Sie müssen die Parameter angeben, die mit dem Akzentflexakzent (^) enden ) wenn sie zuletzt in der Zeile stehen, da es ein Fortführungssymbol in Windows ist.