Git Basics Flashcards

Git

1
Q

Was sind die Hauptunterschiede zwischen Git und SVN?

A
  • Bei SVN liegt das komplette Repository nur zentral vor
  • Bei Git ist jede Kopie des Repositories vollständig
  • Git macht es einfacher, einzelne Features in kleine Commits aufzuteilen
  • Git macht die Handhabung von Commits und Branches einfacher
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wie wird ein Git-Repo erstellt?

A

git init
Initialisiert das aktuelle Verzeichnis als Git-Repository, auch wenn bereits Inhalt vorhanden ist.

git init –bare
Ein “bare” Repository besteht nur aus dem Inhalt des .git-Repositories - es exisitiert keine ausgecheckte “working copy” (GitLab hat intern z.B. nur “bare” Repositories) und es können keine Dateien bearbeitet werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Woran erkenne ich, dass ein Verzeichnis ein Git-Repository ist?

A

.git-Ordner ist darin vorhanden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie clone ich ein Repository?

A

git clone <repo-url> [<target-folder>]</target-folder></repo-url>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wo liegen die Konfigurationsdateien von Git und wie ist ihre Priorisierung?

A

Von höherer zur niedrigerer Priorität (local überschreibt user etc.)

  • local (/.git/config)
  • user ($HOME/.gitconfig)
  • global (Linux: /etc/gitconfig, Windows: C:\Programme\Git\config)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Warum muss die Konfigurationsoptoins core.autocrlf unbedingt auf false stehen?

A

Dateien werden beim Checkout sonst mit CRLF-Endungen ausgecheckt - unabhängig davon, wie sie im Repo sind - und mit LF wieder eingecheckt. Das kann zu Problemen z.B. mit Shell-Skripten führen.

Generell: Option auf false setzen (git config –global core.autocrlf false) und darauf achten, dass der eingesetzte Editor korrekt eingestellt ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie ist das Kommando zum Hinzufügen einer Datei (staging)?

A
  • git add - stage <file> für den nächsten Commit</file>
  • git add <folder> - stage alle Änderungen im Verzeichnis für den nächsten Commit</folder>
  • git add -p - interaktives Hinzufügen von einzelnen Teilen einer Datei für den nächsten Commit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie ist das Kommando zum Commit?

A
  • git commit - startet (wenn möglich) einen Texteditor zur Eingabe des commit messages
  • git commit -m “message” - committed mit dem commit message “message”
  • git commit -a -m “message” - committed alle ÄNDERUNGEN an Dateien im Repository (fügt keine untracked files hinzu)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Kommando, um Übersicht über das Repo zu bekommen (aktueller Branch, neue/geänderte Dateien)

A

git status

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Unterschied zwischen git status und git log?

A

“git status” zeigt den aktuellen Stand des Repositories an (Dateien), “git log” zeigt die Commit-History an

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was macht das “revert”-Kommando?

A
  • git revert <commit></commit>

Macht einen Commit rückgängig, indem die umgekehrten Änderungen auf den aktuellen Stand angewendet werden.

Behält die Commit History bei und erstellt einen neuen Commit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Kommandos und Verwendung von git checkout?

A
  • git checkout master - Checkout des “master”-Branches - nur möglich, falls dadurch keine veränderten Dateien überschrieben würden (keine Konflikte)
  • git checkout <file> - setzt die Datei auf den Stand des aktuellen HEAD</file>
  • git checkout <commit> <file> - Checkout der Datei in Version des angegebenen Commits</file></commit>
  • git checkout <ref> - allgemein Version des Checkouts; <ref> kann ein Branchname, ein Tag oder ein Commit(-Hash) sein</ref></ref>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was macht git reset –hard?

A

Setzt das aktuelle Working Directory zurück auf den Stand von HEAD

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was ist HEAD?

A

Es gibt mehrere “head” (kleingeschrieben), die auf Commits zeigen, z.B. zeigt ein “branch head” auf den Commit, auf dem sich ein Branch befindet.

“HEAD” (großgeschrieben) zeigt auf den aktuell ausgecheckten commit.

“detached HEAD” bezeichnet den Zustand, bei dem ein beliebiger Commit statt eines “head” (kleingeschrieben) ausgecheckt ist, sprich ein Commit, auf den keine Reference (branch oder tag) zeigt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist der Sinn eines Branches?

A
  • ein Git-Branch ist ein unabhängiger Entwicklungszweig
  • kann als Fork in der History des Projektes angesehen werden
  • oder als ganz neues working directory
  • neue Commits können in der History eines Branches aufgezeichnet werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was sind die zwei merge-Kommandos und was ist der Unterschied zwischen ihnen?

A

Zwei Typen:

  • fast-forward
  • 3-way merge

Fast forward:
- einer der beiden Branches (master und branch) wurde nicht verändert, d.h. dieser kann ohne neuen merge commit einfach auf den Stand des anderen Branches gesetzt werden

3-way merge:

  • beide Branches wurden verändert, also muss ein merge commit erzeugt werden
  • sollte eine Datei in beiden verändert worden sein, müssen ggf. Konflikte behoben werden
17
Q

Was ist der Sinn folgender vier Kommandos?

  • git remote
  • git fetch
  • git pull
  • git push
A

git remote

  • verwaltet die URLs von Remote Repositories
  • git remote -v - listet alle konfigurierten Remotes
  • git remote add/rm/rename - neues Remote hinzufügen, Remote löschen, Remote umbenennen

git fetch
- holt Commits von Remotes und speichert sie in “remote branches”, dort können sie betrachtet werden, bevor sie gemerged werden

git pull
- verhält sich wie “git fetch” gefolgt von “git merge”

git push
- sende commits vom lokalen zu einem remote repository