Git für TFS Benutzer



Einführung in Git und GitLab



Martin Gondermann - @magicmonty

TLDR

Vergleich TFS ↔ Git

TFS

Git

Zentralisiert

Verteilt

Workspace

Repository (aka. "Repo")

Changeset

Commit hash

Code Review

Merge- oder Pull-Request

TLDR

Vergleich TFS ↔ Git

TFS

Git

Get Latest

clone (1. mal) bzw. pull

Check in

git commit & git push

Check out

Nicht notwendig

Pending changes

git status

TLDR

Vergleich TFS ↔ Git

TFS

Git

Branch

Branch - git branch

Label

Tag - git tag

Shelveset

Stash - git stash

Merge

Merge - git merge

Zentralisiert vs. Verteilt

Zentralisiert

Zentralisiert vs. Verteilt

verteilt

Snapshots vs. Deltas

TFS - Deltas

Snapshots vs. Deltas

Git - Snapshots

Commit vs. Check in

  • TFS:
    • Check in sendet geänderte Daten an den Server
    • ein lokaler Commit ist nicht möglich
  • Git:
    • commit speichert Änderungen im lokalen Repository
    • push sendet die Änderungen im lokalen Repository an den Server

Branching

TFS

  • Branch wird auf dem Server erstellt
  • Branch wird dann in einem extra Verzeichnis auf den lokalen Rechner synchronisiert
  • relative langsame ("teure") Operation, daher nur selten benutzt

Branching

Git

  • Branch erstellen ist nur das Setzen eines Namens auf einen Commit
  • Es wird immer im selben Verzeichnis operiert.
  • Branch wechseln ist sehr schnell, da nur die geänderten Dateien im Verzeichnis angepasst werden
  • Wird häufig benutzt z.B. für
    • Feature-Branches (kurzlebig)
    • Bugfix-Branches (kurzlebig)
    • Release-Branches (langlebig)

Git Clients

Git Clients

Visual Studio integriert

Git Clients

SourceTree

Git Clients

Tower

Git Clients

Git Kraken

GitLab

aka "TFS für Git"

  • Zentrales Repository-Management
  • CI Server (optional)
  • Wiki per Projekt (optional)
  • Issue-Management
    • abgeschaltet und nach JIRA umgeleitet

GitLab Workflow

Production branch mit GitLab flow

GitLab Workflow

Environment branches mit GitLab flow

GitLab Workflow

Release branches mit GitLab flow

GitLab Workflow

Andere Branching-Strategien

  • Feature/CR/Bugfix-Branches
    • relativ kurzlebig
    • Werden in Release-, Environment- oder Production-Branches gemerged
    • Ersatz für ShelveSets in FAEP

GitLab Workflow

Merge Requests / Automatischer Code Review

Danke