SlideShare ist ein Scribd-Unternehmen logo
Torsten Flatter | inovex GmbH


"Git.NET" gibt's nicht?
Vorstellung
      • Torsten Flatter
      • inovex GmbH
      • .NET / C# seit 2004
      • VSS, CVS, SVN,
        TFS, hq, git
      • Enterprise-Umfeld
Agenda
•   Überblick
•   Grundlagen
•   Einsatzbereiche
•   Tools
Fragen und Antworten
• Fragen bitte gleich stellen!
• Grundsatz-Diskussionen am Ende
Überblick
DVCS: Großer
Durchbruch in den
letzten Jahren

• Git
• Mercurial
• (Bazaar)
Erfolg von DVCS
• Aus der Praxis geboren (Linux Kernel)
  – „Eat your own dogfood!“
  – Offline(fähig)
  – schnell und effizient
• Katalysator Github
  – Leichter Zugang für jeden
• Es macht einfach Spaß!
• Zahllose Anwendungsmöglichkeiten
Next
• Was bedeutet „verteilt“ eigentlich
  genau?
• Welche Vorteile habe ich?
• Wie kann das ohne Server
  funktionieren?
• Quellenangabe: Bilder aus progit.org
Klassisches Setup
         • Historie aller Commits
           auf dem Server
         • Jeder Client hat genau
           seine Arbeitsdaten
         • Commits gehen gegen
           den Server
         • Wie sonst? ;-)
Verteiltes Setup (ein Client)
               • Die vollständige(!)
                 Historie ist auf
                 jedem Client
               • Commits gegen den
                 Client
               • Ebenso Rollbacks,
                 Branches, Diffs, …
Verteiltes Setup (2 Clients)
              • Volle Historie auf
                allen Clients
              • Jeder Client hat alle
                Daten im Repo
                (Verzeichnis .git)
              • Clients holen sich
                Updates (pull)
Verteiltes Setup (viele Clients)
                • Bei Teams ≥ 2 ist
                  Server sinnvoll
                • Server-Stand „führt“
                  (per Konvention)
                • Austausch zum
                  Server mit
                  push und pull
                • Direkter Austausch
                  zwischen Clients
                  weiterhin möglich!
Wie funktioniert das?
• Versions-IDs sind GUIDs
  – Keine formalen Konflikte der Commits
  – Inhaltliche Konflikte natürlich weiterhin
    möglich ;-)
• History auf dem „Client“ wird bestimmt
  durch commits
• History auf dem „Server“ (besser:
  baseless Repo) wird bestimmt durch
  pushes
Anwendungsmöglichkeiten
• Versionierung nicht nur von Code …
  – Skripte (SQL, cmd, …)  Diff!
  – Dokumente (Office, UML, Specs!)  History!
  – Bilder (Logos, Icons, …)
• Backup einfach per git push auf …
  – Netzlaufwerk
  – anderen Rechner
  – USB-Stick  „Aktenkoffer“
• Einfach starten, einfach skalieren! … 
Zukunft von DVCS
• IMHO: Zukunft aller VCS
  – VCS sind Subset von DVCS
Konkret im MS-Umfeld
• Team Foundation Server (langfristig)
  Brian Harry (blogs.msdn.com)
  „people are asking ‘but, did you implement
  DVCS?’. The answer is no, not yet.“
• Git-tf (kurzfristig)
  Brian Harry (blogs.msdn.com)
 „you can create a local Git repo from a TFS
 server with git tf clone”
Next
• Typischer Workflow eines neuen
  Projekts
Neues Projekt erzeugen
> git init       • Erzeugt ein neues
                   .git-Verzeichnis
                 • Das Repository
                   enthält alle Daten
                   –   Dateien
                   –   Historie
                   –   Branches
                   –   …
An Projekt teilhaben
> git clone <origin>   • Klont ein existierendes
                         Repository
                       • Das Repository
                         enthält alle Daten
                         –   Dateien
                         –   Historie
                         –   Branches
                         –   …
Dateien hinzufügen
> git add Program.cs   • Fügt Dateien dem
                         index hinzu.
                       • Notwendig für
                         – Neue Dateien
                         – Geänderte Dateien
Dateien versionieren
> git commit -a          • Fügt Dateien der
    -m "erste Version“     Historie hinzu
                         • -a: add (wichtig!)
                         • -m: Kommentar
                         • Ab jetzt für andere
                           Clients über pull
                           oder push verfügbar
Neuen Stand holen
> git pull origin master   • Holt den letzten
                             Stand
                           • „origin“ ist Quelle
                             von clone
„guten“ Stand sichern
> git push origin master • Veröffentlicht den
                           aktuellen Stand
                         • „origin“ ist Quelle
                           von clone

                         Hier ist der große
                         Vorteil von DVCS:
                         Nur validierte Stände
                         werden veröffentlicht
Tools
• Kommandozeile ist OK, aber
  es geht auch bequemer:
• TortoiseGit fürs Filesystem
• Msysgit als Unterbau
• Git Source Control Provider
  für Visual Studio
Workflows von DVCS
•   Viele kleine lokale Commits
•   Push erst dann, wenn alles läuft (ggf. rebased)
•   Branches möglich, aber nicht immer nötig
•   Wenn nötig, dann lokal oder remote möglich
    • Lokale Branches sind wirklich nur lokal ;-)
Erste Schritte
• Ausprobieren mit Skripten
• Wenn was nicht klappt
   • .git-Verzeichnis einfach wieder löschen
   • von vorne anfangen
• Nichts zu verlieren ;-)
Weitere Doku
• Im Netz gibt es unheimlich viel Doku zu git
  • Die Quelle: http://git-scm.com/
  • Das Buch „Pro Git“: http://git-scm.com/book/de
     • Die Referenz
     • Selbst in git versioniert

Weitere ähnliche Inhalte

PDF
Versionskontrolle mit Subversion und Git
PDF
Docker Workbench
PDF
Sei (k)ein Blödmann und nimm Git!
PDF
oVirt 3.5 - Einführung und Evaluierungsergebnisse
PDF
Einsatz von Git im Unternehmen
PDF
Git vs SVN - Eine vergleichende Einführung
PDF
GIT / SVN
PDF
systemd & Docker
Versionskontrolle mit Subversion und Git
Docker Workbench
Sei (k)ein Blödmann und nimm Git!
oVirt 3.5 - Einführung und Evaluierungsergebnisse
Einsatz von Git im Unternehmen
Git vs SVN - Eine vergleichende Einführung
GIT / SVN
systemd & Docker

Was ist angesagt? (20)

PDF
git - eine praktische Einführung
PDF
Docker Einführung @GPN15
PDF
LinuxTag 2008 - Virtuelle Cold-Standby Server mit Linux
PPTX
Proxtalks 2016 - Migration zu Proxmox VE
KEY
Git vs SVN DevCon 2011
PDF
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
PDF
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
PDF
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
PDF
docker.io - Secure And Portable Containers Made Easy
PDF
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
PDF
Docker - Containervirtualisierung leichtgemacht
PDF
Docker und Kubernetes Patterns & Anti-Patterns
PPTX
Vagrant, Puppet, Docker für Entwickler und Architekten
PPTX
Tipps und Tricks im Umgang mit Docker
PDF
Was ist Docker ?
PDF
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
PDF
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
PDF
Git Grundlagen
KEY
Subversion Schulung
PPTX
Docker Hosting (Webinar vom 10. März 2016)
git - eine praktische Einführung
Docker Einführung @GPN15
LinuxTag 2008 - Virtuelle Cold-Standby Server mit Linux
Proxtalks 2016 - Migration zu Proxmox VE
Git vs SVN DevCon 2011
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker - Containervirtualisierung leichtgemacht
Docker und Kubernetes Patterns & Anti-Patterns
Vagrant, Puppet, Docker für Entwickler und Architekten
Tipps und Tricks im Umgang mit Docker
Was ist Docker ?
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Git Grundlagen
Subversion Schulung
Docker Hosting (Webinar vom 10. März 2016)
Anzeige

Ähnlich wie "git.net" gibt's nicht? (20)

PDF
Version management mit Git und Github
PDF
Versionskontrolle mit Git
PDF
Git barcamp stuttgart_2010
PDF
git Vorstellung
PDF
Enterprise Git Adoption Webinar - German
PDF
Einführung in Git
PDF
Git class german / english
PDF
DWX 2017 - GIT im Leben eines VS Entwicklers
PPT
Überblick über aktuelle Versionsmanagementsysteme
PDF
Git Power-Workshop
PDF
Git für Fortgeschrittene
PDF
Verteilte Versionskontrolle mit Git
PDF
Verteilte Versionskontrolle mit Git
PDF
git started – IPC2012
KEY
Mercurial
PDF
Git: Grundlagen der Versionsverwaltung (Webinar vom 17.06.2015)
PPTX
Configuration Management (Fokus: Version-Controlling) – Best Pracitces
PPT
Do it the_git_way
PPTX
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Version management mit Git und Github
Versionskontrolle mit Git
Git barcamp stuttgart_2010
git Vorstellung
Enterprise Git Adoption Webinar - German
Einführung in Git
Git class german / english
DWX 2017 - GIT im Leben eines VS Entwicklers
Überblick über aktuelle Versionsmanagementsysteme
Git Power-Workshop
Git für Fortgeschrittene
Verteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit Git
git started – IPC2012
Mercurial
Git: Grundlagen der Versionsverwaltung (Webinar vom 17.06.2015)
Configuration Management (Fokus: Version-Controlling) – Best Pracitces
Do it the_git_way
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Anzeige

Mehr von inovex GmbH (20)

PDF
lldb – Debugger auf Abwegen
PDF
Are you sure about that?! Uncertainty Quantification in AI
PDF
Why natural language is next step in the AI evolution
PDF
WWDC 2019 Recap
PDF
Network Policies
PDF
Interpretable Machine Learning
PDF
Jenkins X – CI/CD in wolkigen Umgebungen
PDF
AI auf Edge-Geraeten
PDF
Prometheus on Kubernetes
PDF
Deep Learning for Recommender Systems
PDF
Azure IoT Edge
PDF
Representation Learning von Zeitreihen
PDF
Talk to me – Chatbots und digitale Assistenten
PDF
Künstlich intelligent?
PDF
Dev + Ops = Go
PDF
Das Android Open Source Project
PDF
Machine Learning Interpretability
PDF
Performance evaluation of GANs in a semisupervised OCR use case
PDF
People & Products – Lessons learned from the daily IT madness
PDF
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
lldb – Debugger auf Abwegen
Are you sure about that?! Uncertainty Quantification in AI
Why natural language is next step in the AI evolution
WWDC 2019 Recap
Network Policies
Interpretable Machine Learning
Jenkins X – CI/CD in wolkigen Umgebungen
AI auf Edge-Geraeten
Prometheus on Kubernetes
Deep Learning for Recommender Systems
Azure IoT Edge
Representation Learning von Zeitreihen
Talk to me – Chatbots und digitale Assistenten
Künstlich intelligent?
Dev + Ops = Go
Das Android Open Source Project
Machine Learning Interpretability
Performance evaluation of GANs in a semisupervised OCR use case
People & Products – Lessons learned from the daily IT madness
Infrastructure as (real) Code – Manage your K8s resources with Pulumi

"git.net" gibt's nicht?

  • 1. Torsten Flatter | inovex GmbH "Git.NET" gibt's nicht?
  • 2. Vorstellung • Torsten Flatter • inovex GmbH • .NET / C# seit 2004 • VSS, CVS, SVN, TFS, hq, git • Enterprise-Umfeld
  • 3. Agenda • Überblick • Grundlagen • Einsatzbereiche • Tools
  • 4. Fragen und Antworten • Fragen bitte gleich stellen! • Grundsatz-Diskussionen am Ende
  • 5. Überblick DVCS: Großer Durchbruch in den letzten Jahren • Git • Mercurial • (Bazaar)
  • 6. Erfolg von DVCS • Aus der Praxis geboren (Linux Kernel) – „Eat your own dogfood!“ – Offline(fähig) – schnell und effizient • Katalysator Github – Leichter Zugang für jeden • Es macht einfach Spaß! • Zahllose Anwendungsmöglichkeiten
  • 7. Next • Was bedeutet „verteilt“ eigentlich genau? • Welche Vorteile habe ich? • Wie kann das ohne Server funktionieren? • Quellenangabe: Bilder aus progit.org
  • 8. Klassisches Setup • Historie aller Commits auf dem Server • Jeder Client hat genau seine Arbeitsdaten • Commits gehen gegen den Server • Wie sonst? ;-)
  • 9. Verteiltes Setup (ein Client) • Die vollständige(!) Historie ist auf jedem Client • Commits gegen den Client • Ebenso Rollbacks, Branches, Diffs, …
  • 10. Verteiltes Setup (2 Clients) • Volle Historie auf allen Clients • Jeder Client hat alle Daten im Repo (Verzeichnis .git) • Clients holen sich Updates (pull)
  • 11. Verteiltes Setup (viele Clients) • Bei Teams ≥ 2 ist Server sinnvoll • Server-Stand „führt“ (per Konvention) • Austausch zum Server mit push und pull • Direkter Austausch zwischen Clients weiterhin möglich!
  • 12. Wie funktioniert das? • Versions-IDs sind GUIDs – Keine formalen Konflikte der Commits – Inhaltliche Konflikte natürlich weiterhin möglich ;-) • History auf dem „Client“ wird bestimmt durch commits • History auf dem „Server“ (besser: baseless Repo) wird bestimmt durch pushes
  • 13. Anwendungsmöglichkeiten • Versionierung nicht nur von Code … – Skripte (SQL, cmd, …)  Diff! – Dokumente (Office, UML, Specs!)  History! – Bilder (Logos, Icons, …) • Backup einfach per git push auf … – Netzlaufwerk – anderen Rechner – USB-Stick  „Aktenkoffer“ • Einfach starten, einfach skalieren! … 
  • 14. Zukunft von DVCS • IMHO: Zukunft aller VCS – VCS sind Subset von DVCS
  • 15. Konkret im MS-Umfeld • Team Foundation Server (langfristig) Brian Harry (blogs.msdn.com) „people are asking ‘but, did you implement DVCS?’. The answer is no, not yet.“ • Git-tf (kurzfristig) Brian Harry (blogs.msdn.com) „you can create a local Git repo from a TFS server with git tf clone”
  • 16. Next • Typischer Workflow eines neuen Projekts
  • 17. Neues Projekt erzeugen > git init • Erzeugt ein neues .git-Verzeichnis • Das Repository enthält alle Daten – Dateien – Historie – Branches – …
  • 18. An Projekt teilhaben > git clone <origin> • Klont ein existierendes Repository • Das Repository enthält alle Daten – Dateien – Historie – Branches – …
  • 19. Dateien hinzufügen > git add Program.cs • Fügt Dateien dem index hinzu. • Notwendig für – Neue Dateien – Geänderte Dateien
  • 20. Dateien versionieren > git commit -a • Fügt Dateien der -m "erste Version“ Historie hinzu • -a: add (wichtig!) • -m: Kommentar • Ab jetzt für andere Clients über pull oder push verfügbar
  • 21. Neuen Stand holen > git pull origin master • Holt den letzten Stand • „origin“ ist Quelle von clone
  • 22. „guten“ Stand sichern > git push origin master • Veröffentlicht den aktuellen Stand • „origin“ ist Quelle von clone Hier ist der große Vorteil von DVCS: Nur validierte Stände werden veröffentlicht
  • 23. Tools • Kommandozeile ist OK, aber es geht auch bequemer: • TortoiseGit fürs Filesystem • Msysgit als Unterbau • Git Source Control Provider für Visual Studio
  • 24. Workflows von DVCS • Viele kleine lokale Commits • Push erst dann, wenn alles läuft (ggf. rebased) • Branches möglich, aber nicht immer nötig • Wenn nötig, dann lokal oder remote möglich • Lokale Branches sind wirklich nur lokal ;-)
  • 25. Erste Schritte • Ausprobieren mit Skripten • Wenn was nicht klappt • .git-Verzeichnis einfach wieder löschen • von vorne anfangen • Nichts zu verlieren ;-)
  • 26. Weitere Doku • Im Netz gibt es unheimlich viel Doku zu git • Die Quelle: http://git-scm.com/ • Das Buch „Pro Git“: http://git-scm.com/book/de • Die Referenz • Selbst in git versioniert