Skip to content

Instantly share code, notes, and snippets.

@Ben-Kaniobi
Last active May 17, 2023 08:59
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save Ben-Kaniobi/c528376a76765e99058c to your computer and use it in GitHub Desktop.
Save Ben-Kaniobi/c528376a76765e99058c to your computer and use it in GitHub Desktop.
Einführung in git für Neueinsteiger

Einleitung

Was ist Versionsverwaltung?

YouTube-Video
(Englisch)

Was ist git?

YouTube-Video
(Englisch)

Setup

  1. Git Bash herunterladen, installieren und starten

  2. Benutzername, E-Mail-Adresse und option für git push setzen

    git config --global user.name "Your Name Here"
    git config --global user.email "your_email@youremail.com"
    git config --global push.default simple
    • In Linux evtl. anstatt simple current verwenden
    • Sowohl Benutzername wie auch E-Mail-Adresse sind bei jeden commit ersichtlich. Bei GitHub gibt es jedoch die Möglichkeit die E-Mail-Adresse privat zu halten.
  3. SSH-Key generieren (zur Authentifizierung des aktuellen Computers)

    ssh-keygen -t rsa -C "your_email@youremail.com"
    • Datei/Pfad für Key am besten auf Standard lassen
    • Passphrase am besten Leer lassen (muss sonst jedesmal bei git push eingegeben werden)
  4. SSH-Key bei GitHub hinzufügen:

    • Datei id_rsa.pub die im vorherigen Schritt erstellt wurde mit beliebigem Texteditor öffnen
    • Seite https://github.com/settings/ssh öffnen
    • Add SSH key
    • Titel wählen (z.B. Laptop) und gesammter Inhalt von id_rsa.pub bei Key einfügen
  5. Authentifizierung testen

    ssh -T git@github.com

    Bei Warnung yes eingeben

Zusätzliches

Nützliche git-Befehle

Struktur-Übersicht

[Struktur

  • Local repository: Repository auf dem lokalen Computer
  • Remote repository: Repository auf dem fernen Computer/Server mit dem Stand seit dem letzten pushen (via git push)
  • HEAD commit: Neuster commit in diesem branch
  • Unstaged changes: Änderungen die noch nicht zu git hinzugefügt wurden (via git add)
  • Index: Änderungen die bereits zu git hinzugefügt wurden, aber noch nicht committed wurden (via git commit, oder inklusive add via git commit -a)

Allgemein

  • Repository klonen (also z.B. downloaden)

    git clone my_project.git

    Bei GitHub z.B.

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

    (Der repository-Link wird bei GitHub-repositories jeweils rechts angezeigt)

  • Hilfe zu Befehl "CMD" anzeigen

    git CMD --help
  • In ein anderes Verzeichnis wechseln

    cd Verzeichnis

    (Pfad im UNIX-Format, wenn Git Bash in Windows verwended dann z.B. cd /c/Users/user/Desktop/My_Project)

Im lokalen repository

  • Status anzeigen (z.B. neue Dateien, Änderungen, etc.)

    git status
  • Änderungen seit dem letzten commit der Datei "FILE" anzeigen

    git diff FILE

    (Beenden mit q)

  • Datei "FILE" auf den Stand des letzten commits zurücksetzen (→ Änderungen verwerfen)

    git checkout FILE
  • "FILE" bereit machen für den commit (nur solche Dateien werden dann im commit übernommen)

    git add FILE

    ("FILE" kann auch . sein, entspricht dem aktuellen Verzeichnis und somit allen Dateien)

  • Rückgängig machen von git add FILE

    git reset FILE
  • Commit mit Kommentar

    git commit -m "Comment"

    (Es werden nur Dateien berücksichtigt, die vorher mit git add FILE "vorgemerkt" wurden)

  • Lokale commits zum remote repository "hochladen"

    git push
  • Commits vom remote repository "runterladen"

    git pull
  • Commit history anzeigen

    git log

    (Beenden mit q)

Remote repository erstellen

Online

Offline

  1. Git Bash in gewünschtem Verzeichnis starten

    • Windows: Im Verzeichnis Rechtsklick, Git Bash Here wählen
      (sofern diese Option beim Installieren aktiviert wurde)
    • Allgemein: Git Bash starten, cd Verzeichnis
      (Pfad im UNIX-Format, für Windows z.B. cd /c/Users/user/Desktop)
  2. Remote repository als Unterordner erstellen

    git init --bare "My_repo.git"

Lokales repository erstellen

  1. Git Bash in gewünschtem Verzeichnis starten

    • Windows: Im Verzeichnis Rechtsklick, Git Bash Here wählen
      (sofern diese Option beim Installieren aktiviert wurde)
    • Allgemein: Git Bash starten, cd Verzeichnis
      (Pfad im UNIX-Format, für Windows z.B. cd /c/Users/user/Desktop/My_Project)
  2. Lokales repository erstellen

    git init
  3. Mit remote repository verknüpfen

    git remote add origin "path_to_remote_repo.git"
  4. Standard branch angeben

    Datei .git/config mit beliebigem Texteditor öffnen und folgendes hinzufügen:

    [branch "master"]
        remote = origin
        merge = refs/heads/master

Um das erste Mal vom neu erstellten lokalen repository ins remote repository zu pushen folgender Befehl verwenden:

git push origin master

Dateien ignorieren mit .gitignore-Datei

Um im repository Dateien zu ignorieren (z.B. Dateien die nur von der Entwicklungsumgebung gebraucht werden und nicht wirklich zum Projekt gehören) kann die Datei .gitignore erstellt werden.

"Von Hand" kann in Windows keine Datei erstellt werden, die mit einem Punkt beginnt. Mit folgendem Befehl kann die Datei jedoch erstellt werden:

echo > .gitignore

Syntax

  • Kommentar

    # Comment
  • Ignoriere Datei/Verzeichnis "hello" (auch in Unterverzeichnissen)

    hello
  • Ignoriere Datei/Verzeichnis "hello" (nur in diesem Verzeichnis)

    /hello
  • Ignoriere alle Dateien/Verzeichnisse ausser "hello" (in diesem Verzeichnis)

    *
    !hello
  • Ignoriere alle Dateien/Verzeichnisse ausser "hello" (auch in Unterverzeichnissen)

    *
    !hello
    !*/
  • Ignoriere alle Dateien mit der Endung ".ext"

    *.ext
  • Ignoriere nur Verzeichnis (nicht Datei) "hello" (auch in Unterverzeichnissen)

    hello/
  • Ignoriere nur Verzeichnis (nicht Datei) "hello" (nur in diesem Verzeichnis)

    /hello/
  • Ignoriere nur Datei (nicht Verzeichnis) "hello" (nur in diesem Verzeichnis)

    /hello
    !/hello/
  • Ignoriere nur Datei (nicht Verzeichnis) "hello" (auch in Unterverzeichnissen)

    hello
    !hello/

Beispiel

# Backup-Dateien
*~
*.bak

# Temporäre Dateien/Verzeichnisse
tmp
temp
*.tmp
*.temp

# Windows Dateien
Thumbs.db
thumbs.db
*.DS_Store
*.lnk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment