Skip to content

Instantly share code, notes, and snippets.

@Nokius
Created August 16, 2019 12:06
Show Gist options
  • Save Nokius/d24b72b346ad157442bb7ebd5a7de0d7 to your computer and use it in GitHub Desktop.
Save Nokius/d24b72b346ad157442bb7ebd5a7de0d7 to your computer and use it in GitHub Desktop.
[git questions] Du willst deinen Bewerben ein paar fragen zu git stellen? Dan los!

Basic

Frage I

  • Initialisiere in einem neuen Ordner eine git repository.

$> mkdir my_fancy_project ; cd my_fancy_project ; git init

Frage II

  • Zeige Dir deine lokalen Branches an.

$> git branch

Frage III

  • Erstelle eine neue Branch.

$> git branch new_branch -> erstellt nur die neue Branch wechselt nicht in diese

$> git checkout -b new_branch -> erstellt und wechselt in neue erstellte Branch

Frage IV

  • Zeige Status deiner Branch

$> git status

Frage V

  • Erstelle eine Datei, tracke die Datei und commite diese.

$> touch <new_file> ; git add <new_file> ; git commit -m "mein neue Datei" -> commitet direkt ohne Umweg mittles Editor

$> touch <new_file> ; git add <new_file> ; git commit -> öffnet Editor


Beginner

Frage I

  • Wechsel in die Branch 'not_master'

$> git checkout not_master

Frage II

  • Zeige diff von Deiner development Branch zur master branch

$> ( git checkout development ; ) git diff master
-> Nutzer sollte in Branch development sein dafür

$> git diff development master -> Nutzer muss nicht in der Branch sein

Frage III

  • Finde heraus Wer wann die Datei 'my_awesome_code.cpp' in Zeile 212, folgende 10 Zeilen editiert hat

$> git blame -> und geht in Zeile 212 und prüft die Folgenden Zeilen

$> git blame -L 212,+10 -> zeigt ab Zeile 212 die nächsten 10 Zeilen

Frage IV

  • Liste alle Remote Endpunkte einer deiner lokalen Repository.

$> git remote -v -> beste Lösung -> alternative über .git/config einsehbar

  • Füge eine neuen Remote Endpunkt 'gitserver' hinzu.

$> git remote add gitserver https://gitserver.com/awesomedev/fancyprojct -> für eine https Endpunkt

$> git remote add gitserver [email protected]:awesomedev/fancyprojct -> für einen ssh Endpunkt

  • Push deine lokale 'feature' Branch zum neuen Entpunkt 'gitserver'

$> git push gitserver feature

Frage V

  • Nenne deine Branch 'new_features' nach 'new_feature' um.

$> (git checkout new_features ; ) git branch -m new_feature -> nennt aktuell Branch um

$> git branch -m new_features new_feature -> bennet die Branch new_features nach new_feature um

Frage VI

  • Merge Branch new_feature in deine master Branch.

$> git checkout master ; git merge new_feature

Frage VII

  • Lass Dir die Commits anzeigen.

$> git log


Expert

Frage I

  • Finde alle Commits von Commiter 'Erik'.

$> git log --author=Erik

Frage II

  • Finde Commits mit Ticket Nummer 'SPRINT#032019'.

$> git log --grep=SPRINT#032019

Frage III

  • Lösche Datei 'file/old_code/dirty_function.cpp' aus deiner Repository und commite anschießen

$> git rm file/old_code/dirty_function.cpp ; git commit -m "[remove] dirty function finaly removed"

Frage IV

  • Du stellst fest das Deine letzter Commit ein nicht die Richtige Ticket Nummer beinhaltet, passe diese bitte an.

$> git commit --amed -> öffent den Editor

$> git commit --amed -m "[Tricket#1234] better code" -> setzt Commit Message direkt

Frage V

  • Zeige Dir die letzten Commit mit Änderungen an

$> git log -p

Frage VI

  • Fasse die letzten drei Commits zusammen.

$> git log -n 4 -> Anzeigen der letzen vier Commits

$> git rebase --interactive (-i) <sha1 von commit 4> -> öffent Editor

pick 5543f43 add a typo f 1dfcc01 add copywrite f 7b6e4c7 fix typo -> Option (s)quash [behält den Commit Message] und (f)ixup [verwirft Commit Message] werden genutzt

Frage VII

  • Zeige File 'path/to/dirty_code.php' aus Branch 'awesome_feature_branch'.

$> git show awesome_feature_branch:path/to/dirty_code.php


Pro

Frage I

  • Du hast in Deiner Repository mehere Änderungen im Tagesverlauf vorgenommen. Am Nachmittag hast Du mit einem Kollegen eine Rücksprache und es stellt sich herraus, dass Du einen Commit nicht mehr brauchst. Wie entfernst Du aus Deiner nicht gepushten Branch den dritten Commit von füunf aus dem Tagesverlauf ohne das dir andere Commits verloren gehen.

$> git log ` commit 6ff06328b635bd06a513d9cb0403206f46961f31 Author: awesome dev [email protected] Date: Fri May 3 10:12:46 2019 +0200

add copywrite

commit bfbcdd14e9d73263494eaaa826a4c4b0779b1040 Author: awesome dev [email protected] Date: Fri May 3 10:12:06 2019 +0200

add a typo

commit 2d035d0b939f150ea83a5636a33fbeb828aea67c Author: awesome dev [email protected] Date: Fri May 3 10:10:58 2019 +0200

add a poem

commit beeb9c740a9c3a8788d853ea3381dd46b7cbfe75 Author: awesome dev [email protected] Date: Fri May 3 10:09:02 2019 +0200

add another line

commit b140677047d013f7ca6b418c8d94d70db1152416 Author: awesome dev [email protected] Date: Fri May 3 10:08:26 2019 +0200

file cration

`

$> git rebase --interactive (-i) beeb9c740a9c3a8788d853ea3381dd46b7cbfe75 -> entfernen der Zeile mit dem zu entfernenten Commit, sichern der Datei im Editor

! mögliche Rebase Konflikte auflösen (kann Aufträten muss aber nicht)

$> vim file ; git add file ; git rebase --continue

$> git log -> nach rebase

` commit 1dfcc019401a8ec4af2ae77c2bf9cbd0e4bcb174 Author: awesome dev [email protected] Date: Fri May 3 10:12:46 2019 +0200

add copywrite

commit 5543f437f30fbfff10f8585b00d79ed6958e283b Author: awesome dev [email protected] Date: Fri May 3 10:12:06 2019 +0200

add a typo

commit beeb9c740a9c3a8788d853ea3381dd46b7cbfe75 Author: awesome dev [email protected] Date: Fri May 3 10:09:02 2019 +0200

add another line

commit b140677047d013f7ca6b418c8d94d70db1152416 Author: awesome dev [email protected] Date: Fri May 3 10:08:26 2019 +0200

file cration

`

Frage II

  • Zeige Dir nur die SHA1 und Commit Message an.

$> git log --oneline

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment