Git

Siehe dieses Youtube Video Eingabeaufforderung

Siehe hier die offiziellen GIT- Referenzen

Download Buch in deutsch "Pro Git"

Eingabeaufforderung

Bevor man mit Git arbeitet, sollte man die Eingabeaufforderung/ Kommandozeile oder Windows Power Shell kennen. Die Eingabeaufforderung ist ein Programm, mit dem man auf Windows und DOS zugreifen kann. Die Windows Power Shell ist ein neueres, ähnliches Programm. Für Mac Os und Linux gibt es adäquate Programme. Diese Progamme haben keine grafische Benutzeroberfläche, stattdessen gibt es eine Text-Eingabeaufforderung. Hiermit kann man Ordner und Dateien aufrufen, Dateien erstellen oder löschen oder sogar Programme installieren. Einige Programme lassen sich nur über die Eingabeaufforderung installieren lassen.

Man kann Package-Manager wie chocolatey oder npm installieren mit denen sich dann weitere und auch mehrere Programme auf einmal installieren lassen. chocolaty ermöglicht beispielsweise die Installation des Flashplayers.

Desweiteren kann man mit der Eingabeaufforderung auch Automatisierungen erstellen. Diese werden in einer Datei gespeichert und führen beim Aufruf der Datei die Befehle aus.

Man öffnet die Eingabeaufforderung, indem man im Suchen-Fenster unten cmd und dann Entereingibt. Auch in VSC kann man oben über das Menü ein Terminal/ Eingabeaufforderung aufrufen.

Man kann über die rechte Maustaste die Darstellung des Fensters ändern (Schrift, Hintergrundfarbe etc.)

In der ersten Zeile erscheint die Windows Version und ein Pfad zu einem Ordner. Standarmäßig C:\Users\Windows. Hierbei ist Users ein Alias auf den Ordner "Benutzer" und "Windows" ist in diesem Falle der Name des Rechners.

Man klickt in das Fenster, gibt einen der unten aufgeführten Befehle ein und drückt die Enter Taste.

Befehle der Kommandozeile
Befehl Info Erklärung
dir directory zeigt alle Ordner, Unterordner und Dateien an. Der Punkt steht für den aktuellen Ordner. .. 2 Punkte stehen für den übergeordneten Ordner. Die Dateigrößen von Dateien in bytes werden angezeigt.
cd change directory
cd desktop
Verzeichnis aufrufen.
cd .. parent directory 2 Punkte verweisen auf das übergeordnete Verzeichnis. Ein Punkt auf das eigene Verzeichnis
D: Laufwerk D Um zu einem Laufwerk zu wechseln gibt man nicht cd ein sondern einfach den Laufwerksbuchstaben und Doppelpunkt
cls clear Löschen der angezeigten Befehle im Fenster
mkdir make directory
mkdir pillepalle
Erstellen eines Ordners.
echo Hallo > test.txt echo schreiben
Hier wird der Text Hallo in eine neue Datei namens test.txt geschrieben.
copy copy test.txt test2.txt Kopieren einer Datei test.txt und erstellen einer neuen Datei test2.txt
explorer . Explorer öffnen Öffnet de aktuellen Ordner im Explorer
wmic logicaldisk get name Laufwerke anzeigen Listet alle Laufwerke auf
code in VSC öffnen
code "D:\web\work\git-lernen"
code .
In VSC öffnen oder man gibt den . ein, um den akutellen Ordner zu öffnen
chkdsk check disc Überprüft das aktuelle Laufwerk auf Fehler.
chkdsk/f Repariert gefundene Fehler.
chkdsk/r Findet und repariert fehlerhafte Sektoren und stellt lesbare Informationen wieder her.
tasklist Zeigt alle laufenden Prozesse an
shutdown/s Fährt das System runter
befehl /? Infos zu Befehlen Gebe einen Befehl mit einem Fragezeichen ein, um eine Erläuterung des Befehls zu erhalten.
ipconfig Ip Adresse Alles über die Ip Adresse
tracert tracert www.google.de Routenverfolgung. Erfahre mehr über die angezeigten IP-Adressen bei whatsmyipaddress.com
Return Taste
(Enter Taste)
  Weiterblättern, wenn man am Ende des Fensters ist
q   Abbrechen

Automatisierungen

Erstelle eine Textdatei mit Notepad und speichere sie mit der Endung cmd oder bat ab. Füge dort Befehle ein. Beim Aufruf werden diese Befehle ausgeführt.
Mehrere Befehle werden in einzelnen Zeilen abgelegt.

Beispielsweise ein Programm öffnen. chrome
Die Kürzel oder Pfade der Programme kann man nachschaue mit rechter Maus.

Über das Programm "Systemumgebungsvariablen bearbeiten" kann man über "Pfad" einen Pfad zu einem Ordner angeben, in dem sich ein Programm mit der Endung exe befindet. Nach einem Neustart kann man über den Namen das Programm starten. siehe Video

Eine Datei in VSC öffnen: code "D:\web\work\git-lernen"

VSC Terminal

In Visual Studio Code (VSC) steht einem im Fenster "Terminal" eine Eingabeaufforderung zur Verfügung.

Sollte es Probleme geben, mit einer Meldung wie: "...Datei ist nicht digital signiert", bedeutet es, dass das System eine Sicherheitsmaßnahme aktiviert hat, die verhindert, dass unsignierte Scripte ausgeführt werden. Hier muss man die Ausführungsrichtlinie für PowerShell ändern.

Eine Anleitung findest du hier.

Lösungsschritte:

  1. Öffne Powershell als Administrator.
    Suche in Windowssuche nach PowerShell. Mit rechter Maus als Administrator ausführen.
  2. Überprüfe die aktuelle Ausführungsrichtlinie
    Gib den Befehl Get-ExecutionPolicy ein Die Ausgabe zeigt die aktuelle Richtlinie z.B. restricted
  3. Ändere die Ausführungsrichtlinie mit dem Befehl
    Set-ExecutionPolicy RemoteSigned
    PowerShell fragt nach einer Bestätigung, Bestätige mit A
  4. Überprüfe die Richtlinie
    Gib erneut den Befehl Get-ExecutionPolicy ein. Die Ausgabe sollte nun
    RemoteSigned anzeigen. Starte VSC erneut.

Git

Git ermöglicht das Sichern verschiedener Versionen von Projekten. Man kann ein Projekt Schritt für Schritt aufbauen und dann später mittels Git die verschiedenen Schritte oder Zustände des Projekts erkunden.

Git ermöglicht die Zusammenarbeit in Teams und außerdem kann man ein Projekt bei Github hochladen und bereitstellen.

Lege dazu einen Account bei git Hub an.

Installiere Git auf dem Rechner.

Nun kann man mit der Eingabeaufforderung git Befehle eingeben. Sie beginnen immer mit git

Zustände der Dateien

Es gibt 3 Zustände, in der sich eine Datei befinden kann

  • Modified bedeutet, dass eine Datei geändert, aber noch nicht in der lokalen Datenbank eingecheckt wurde.
  • Staged bedeutet, dass eine geänderte Datei in ihrem gegenwärtigen Zustand für den nächsten Commit vorgemerkt ist.
  • Committed bedeutet, dass die Daten sicher in der lokalen Datenbank gespeichert sind.

Git wird in der Regel über die Eingabeaufforderung gesteuert. Es gibt aber auch Programme mit grafischen Oberflächen.

Siehe von Mario Video über Git und VSC / Video Git mit Kommandozeile

Git Befehle
Befehl Info Erklärung
git --help Hilfe Die wichtigsten Befehle werden erklärt.
git init Initialisieren Ein Ordner .git entsteht. Der ist eventuell versteckt. Er darf nicht gelöscht werden.
git config --global --list Das ist die globale Konfiguration das macht man einmal und muss es nicht in jedem Verzeichnis machen deswegen global
git status Untracked Files, hier werden in roter Schrift Dateien angezeigt, die noch nicht commited sind. Der Ordner ".git" wird eventuell nicht aufgeführt, wenn versteckte Dateien in den Windowseinstellungen als "nicht angezeigt" eingestellt sind.
git diff git diff --staged
git diff --cached

Ausführlicher als git status. Zeigt die genauen Änderungen der Dateien an,die unstaged sind und für den commit vorgemerkt sind.

Wenn man wissen will, was sich geändert hat bei staged Dateien gebe ein:
git diff --staged oder git diff --cached

git add --all git add .
Dateien hinzufügen

Vor dem Commit müssen die Dateien hinzugefügt werden, die commited werden sollen. Der Punkt steht für den gesamten Ordner. Wenn man einen Ordnernamen angibt, werden alle Dateien in dem Ordner hinzugefügt.

Sie befinden sich dann in der staging Area und sind bereit für den commit. Der Commit ist eine gespeicherte Version.

git restore --staged <file> git restore --staged meineDatei.html Eine Datei, die man der Staging Area hinzugefügt hat, wieder daraus entfernen. Beispielsweise git add '
git restore <file> git restore meineDatei.html Eine Datei wieder in ihren vorigen Zustand zurück setzen. Alle Änderungen nach dem letzten commit gehen verloren.
git commit -m "my new version" einstellen
Versionsbezeichnung
Die zuvor mit add hinzugefügten Dateien werden nun als neue Version eingestellt/ commited. Das -m steht für message danach gibt man eine Bezeichnung für diese Version in Anführungsstrichen ein.
git commit ohne Versionsbezeichnung öffnet sich der Standardeditor um die Bezeichnung einzugeben und zu speichern
git commit -am "new version"   Hiermit wird add und commit in einem Schritt ausgeführt.
git commit --amend Namen des Commit ändern

Wenn man den Namen des letzten Commit ändern will, kann man mit git commit --amend den Namen ändern. Es öffnet sich der standardmäßige Editor, wo sich die Änderung einfügen und speichern lässt.

Die Dateien sollten noch nicht gepusht sein.

git commit --amend --no-edit dem letzten Commit etwas geändertes hinzufügen

Wenn man eine Änderung dem letzten commit hinzufügen will, ohne einen neuen commit zu erstellen. Speichere die Änderung, füge es hinzu mit git add . und führe dann den Befehl aus.

Die Dateien sollten noch nicht gepusht sein.

git reset HEAD~

 

alle Änderungen landen im Arbeitsbereich, nicht im Staging.

--mixed ist der Standardwert

Den letzten commit rückgängig machen
git reset --mixed HEAD~
git reset --soft HEAD~ alle Änderungen landen im staging
git reset --hard HEAD~ alle Änderungen werden gelöscht
git reset HEAD~3   Die letzten 3 commits rückgängig machen
git log Logbuch

Alles was man gemacht hat wird im logbuch gespeichert. Die Historie bekommt die Nummern/Hashs von allen Versionen. Author und Message der Versionen werden angezeigt.

(Head -> main) zeigt an auf welchem branch oder welcher Version man sich befindet.

git log --oneline verkürzte Fassung
git log -oneline --graph komplexe Darstellung mit branches

git log -n 3

 

die letzten 3 commits
git reflog   zeigt alle Änderungen und Befehle an. Zu jedem Befehl gibt es eine Bezeichnung HEAD@{14}, die man in git reset angeben kann
git reset HEAD@{14} Bezeichnungen können bei git reflog kopiert werden Alle Änderungen die nach diesem Stand gemacht wurden, werden rückgängig gemacht.
git revert 34534523094 Die Id durch git log

Eine einzelne Commit dazwischen entfernen. Es geht anschließend der Editor auf, um in einer git-Datei einen Namen zu vergeben. Speichere diesen neuen Namen und schließe die Datei. Es wird dadurch ein neuer Commit am Ende erstellt.

Achtung! Es können Konflikte angezeigt werden. git revert --abort bricht den Vorgang ab.

git rm meineDatei.txt  

Dateien aus git entfernen. Sie ist dann nicht mehr versioniert.

Will man die Datei auf der Festplatte behalten wählt man:
git rm --cached meineDatei.txt

git checkout 1234567  

Checkout mit einer bestimmten Versionsnummer/Hash. Diese Hashs bekommt man angezeigt durch git log und kann ihn sich dort kopieren, um ihn nach checkout einzugeben.
Siehe dazu dieses Youtube Video

git checkout master master ist hier der branch Möchte man wieder auf die letzte Version zurück gehen, gibt man den Namen des branch ein. z.B.: git checkout master oder man gibt die letzte commit id ein
Branch
git branch myBranch   Eine neuer Branch / Zweig wird erstellt. Name ohne Leerzeichen angeben. Man befindet sich nicht in dem neuen Branch.
git branch -l   alle Branche auflisten, der mit Sternchen * markierte ist der branch, in dem man sich befindet
git branch -d myBranch   Branch löschen / delete
git checkout -b myBranch   Ein neuer Branch wird erstellt und man wechselt in diesen Branch
git checkout myBranch   In einen Branch wechseln
git merge myBranch  

Wenn man die Versionen aus einem Branch in einen anderen Branch einfügen will, muss man zuerst in den Branch wechseln, in den der andere Branch eingefügt werden soll, dann gibt man den merge-Befehl ein.

Konflikt Wenn man in beiden Branches eine Datei an gleicher Stelle unterschiedlich verändert und commited hat und dann merge ausführt, gibt es einen Konflikt. Öffne die Problemdatei. Sie wurde von git verändert. Bereinige sie und entscheide dich für eine Version speichere sie und führe eine neuen commit aus.

git cherry-pic neuerBranch   Wenn man einen commit versehentlich im Branch neuerBranch angelegt hat und möchte ihn im alterBranch haben, geht man mit checkout in alterBranch führt den cherry-pic Befehl aus. Damit wird der letzte commit kopiert. Dann muß man den commit in neuerBranc löschen. Mit git checkout neuerBranch und dann git reset --hard HEAD~
Github

siehe Marios Video Github remote

Ein lokal erstelltes Projekt als Github Repository zur Verfügung stellen.

Erstelle in Github ein neues repository mit new. Vergebe einen Namen. Keine Leerzeichen. Konvention ist Kleinschreibung und Bindestriche. Am besten den gleichen Namen wie dein lokales Projekt. Wähle Create repository Unter Quickset erscheint der Pfad zu diesem neuen Repository, kopiere ihn.

Gehe auf deinem Rechner in die Eingabeaufforderung in dein Git Projekt und erstelle mit der kopierten Adresse einen remote

git remote add origin https://...

origin ist ein selbst vergebener Name des remote

Die Adresse bekommt man in github

Hiermit wird der remote Befehl zu github erstellt. origin ist ein frei vergebener Name, den man so lassen kann. Die Adresse hat man in github kopiert wie oben beschrieben. Man kann auch mehrere remotes erstellen, die jeweils einen anderen Namen bekommen sollten.
git remote alle remote namen listet alle remotes auf, die man erstellt hat
git remote get-url origin url eines remotes zeigt die url des remote namens origin an
git remote show origin alle Infos ein remote alle Infos eines remote namens origin anzeigen
git remote -v Info alle remotes alle Infos zu allen remotes
git remote rename origin pillepalle umbenennen Umbenennen von origin in pillepalle
git remote remove origin remote entfernen Löschen des remotes origin
git push --set-upstream origin master Upstream origin ist der Name des remote master ist der Name des Branch Bevor man pusht muss man für einen Branch einen Upstream erstellen, macht man das nicht, wird dieser Befehl angezeigt so dass man ihn kopieren kann.
git push -u origin hochladen Die Dateien werden nach github hochgeladen. Der Pfad zum Github-Projekt wurde zuvor mit remote angegeben
  Eine geänderte Version von Github in das lokale Projekt ziehen. In Github eine Datei des Projekts mit Edit ändern. Dann Commit changes wählen, vergeben einen Commit-Namen und bestätige mit Commit changes. Nun hat man einen anderen Stand bei Github. Es gibt 2 Möglichkeiten den Stand auf dem lokalen Rechner zu ziehen, fetch, pull
git fetch origin your branch is behind 'origin/master' by 1 commit Mit fetch wird der Stand von github geholt aber noch nicht gemerged. Wenn man git status aufruft, erscheint die Meldung, dass man lokal einen Stand zurück liegt. Nun kann man stattdessen pull oder merge ausführen
git merge origin/master Beide Befehle müssen ausgeführt werden wenn man git fetch ausführt
git pull   Der Stand von github wird geholt und gemerged
git clone http://myUrl Klon von Github

Wähle das Projekt bei github
wähle anstatt copy die Option clone.
Wähle Option https
kopiere die url.

Erstelle auf dem Rechner ein Verzeichnis.
Rufe es mit Kommandozeile auf.
Verwende die zuvor kopierte Adresse
git clone https://github.com/pastorpixel/first-try

Github

Hier geht es darum, dass man zuerst in Github ein Projekt erstellt und dieses dann auf dem lokalen Rechner zieht. Siehe auch dieses Video

Erstelle ein Projekt in einem Ordner. Wähle mit der Eingabeaufforderung den Ordner aus, aber führe nicht den git init Befehl aus.

Gehe nach Github und erzeuge dort ein neues Projekt/repository. Vergebe einen Namen eine Beschreibung. Eventuell eine Lizens z.B. MIT. Erzeuge keine readme Datei.

Nach Klick auf "Creating Repository" erscheint eine Reihe von git-Befehlen, die man der Reihe nach in der lokalen Eingabeaufforderung eingeben kann, in dem Ordner, in dem das Projekt geladen werden soll.

  • git init
  • git add .
  • git commit -m "first commit"
  • git branch -M main
  • git remote add origin https://github.com/pastorpixel/first-try.git
  • git push -u origin main

Somit hat man das Projekt erstellt und runtergeladen. Die ersten Befehle erzeugen ein neues git Projekt git init

git add . Dateien werden dem Stage hinzugefügt

git commit -m "first commit" Dateien werden untern dem Namen "first commit" gespeichert/commited

Dann wird ein branch main erzeugt und ein Remote Pfad erstellt. Mittels push werden die Datein runtergeladen.

Wenn man die Seite im Browser neu läd, sieht man das Projekt, mit allen Dateien.

Datei aktualisieren

Wenn man weitere Änderungen vorgenommen hat und möchte diese Änderung als neue Version in Git abspeichern und hochladen benötigt man folgende Befehle:

  • git add .
  • git commit -m "git Einleitung"
  • git push

GitHub Repository löschen

  • Wähle ein Repository aus
  • Wähle in der Menüleiste "Setting"
  • Scrolle nach unten bis zur Danger Zone
  • Delete this repository

Github Desktop

Mit Github Desktop kann man einen ein vorhandenes Repository hinzufügen.

Ein neues Repository erstellen.

Wähle unter Add / Create new repository , Wähle den übergeordneten Ordner aus, in dem das Repository erstellt werden soll. Sollte es schon einen Ordner mit Dateien geben, vergebe den gleichen Namen wie den Ordnernamen.

Nachdem man alles erstellt hat, kann man es mit Publish nach Github stellen.

Hat man bei Github Änderungen vorgenommen, erscheint der Button fetch und man kann die Dateien mit fetch und pull herunterladen.

git

VSC & Git

In diesem Screenshot wird das Fenster Quellcodeverwaltung von Visual Studio Code angezeigt. Man sieht, wie man dort die beiden Befehle add und commit ausführt.

Eine genaue Anleitung findet ihr in Marios Video GIT

Installiere auch das Plugin Git Graph. Damit hast du die Möglichkeit, die einzelnen Commits/ Versionen mit rechter Maustaste zurückzusetzen Es entspricht dem Befehl git reset. Wähle:
Reset current branch to this Commit wähle im Untermenü Soft keep all Changes but reset head

NPM

siehe Video Tutorial

NPM ist ein Package Manager. Mit dem man Javascript Pakete in ein Projekt integrieren kann. Es muss jedoch auch NodeJS installiert sein mit dem mam Web Apps, Server etc. nutzen kann. Ich verzichte hier auf Erklärungen und verweise auf das Video Tutorial.

npm
Befehl Erklärung
npm -v Zeigt die installierte Version von npm an
npm init Projekt initialisieren. Es werden Fragen gestellt, wie Name des Projekts,Version,erstes Script, git Repository, keywords, Author, License,Das kann man eingeben oder frei lassen. Anschließend wird alles angezeigt und man muss es noch bestätigen. Eine package.json Datei wird angelegt.
npm init -y Projekt initialisieren mit Standardwerten.
npm config set init-license MIT
npm config set init-author-name "Michael Albers"
Standardwerte ändern
npm config get init-author Standarwerte anzeigen lassen
npm config delete init-author-name Standardwert löschen
npm install express Paket installieren, in diesem Beispiel das Express Paket. Alle abhängigen Pakete werden in den node-modules Ordner gepackt. Außerdem wird eine package-lock.json Datei angelegt, in welcher die Abhängigkeiten aufgeführt sind. Diese Dateien müssen bei der Übergabe eines Projekts nicht mitgeliefert werden, da alles in der package.json aufgeführt ist.
npm install -D nodemon Das Paket (hier nodemon) wird als Dev-Dependencies installiert. Das bedeutet es ist nicht Bestandteil deines Endproduktes. nodemon ist eine Art Server welcher die Seite immer wieder neu läd.
npm update Alle Pakete werden aktualisiert
npm update express Update eines bestimmten Pakets, hier express
npm remove nodemon Paket entfernen hier nodemon
npm install -g nodemon Paket global installieren
npm list Listet alle Pakete deines Projekts auf
npm list -g Alle global installierten Pakete werden aufgelistet
npm install jquery@1.5.1 Installation mit bestimmter Version. Siehe Versionen aller Pakete semver.npmjs.com
npm outdated veraltete Versionen anzeigen
npm run test Script ausführen in diesem Beispiel das Script test

 

Impressum / Datenschutz

www.pastorpixel.de :|: Github Pixel Pastor