SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
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

Was ist angesagt?

git - eine praktische Einführung
git - eine praktische Einführunggit - eine praktische Einführung
git - eine praktische EinführungMarcel Eichner
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15m1no
 
LinuxTag 2008 - Virtuelle Cold-Standby Server mit Linux
LinuxTag 2008 - Virtuelle Cold-Standby Server mit LinuxLinuxTag 2008 - Virtuelle Cold-Standby Server mit Linux
LinuxTag 2008 - Virtuelle Cold-Standby Server mit LinuxSchlomo Schapiro
 
Proxtalks 2016 - Migration zu Proxmox VE
Proxtalks 2016 - Migration zu Proxmox VEProxtalks 2016 - Migration zu Proxmox VE
Proxtalks 2016 - Migration zu Proxmox VEMarco Gabriel
 
Git vs SVN DevCon 2011
Git vs SVN DevCon 2011Git vs SVN DevCon 2011
Git vs SVN DevCon 2011Mario Müller
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Michael Whittaker
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easyinovex GmbH
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easyinovex GmbH
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtB1 Systems GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerNicholas Dille
 
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtFMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtVerein FM Konferenz
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCBild GmbH & Co. KG
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion SchulungJörn Dinkla
 
Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)NETWAYS
 

Was ist angesagt? (20)

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

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

ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveBokowsky + Laymann GmbH
 
Git class german / english
Git class german / englishGit class german / english
Git class german / englishKevin Read
 
Übersicht und Beratung von Versionsverwaltungen für Quellcode (SCM) [2014]
Übersicht und Beratung von Versionsverwaltungen  für Quellcode (SCM) [2014]Übersicht und Beratung von Versionsverwaltungen  für Quellcode (SCM) [2014]
Übersicht und Beratung von Versionsverwaltungen für Quellcode (SCM) [2014]Tommy Ziegler
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Jürgen Gutsch
 
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...digitalSTROM.org
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rexinovex GmbH
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit RexJan Gehring
 
DWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersDWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersMarc Müller
 
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtVerein FM Konferenz
 
JIRA at ImmobilienScout24
JIRA at ImmobilienScout24JIRA at ImmobilienScout24
JIRA at ImmobilienScout24augbb
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance ReloadedGregor Goldbach
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnMartin Seibert
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 

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

ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
 
Deployment
DeploymentDeployment
Deployment
 
Git class german / english
Git class german / englishGit class german / english
Git class german / english
 
git Vorstellung
git Vorstellunggit Vorstellung
git Vorstellung
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
 
Übersicht und Beratung von Versionsverwaltungen für Quellcode (SCM) [2014]
Übersicht und Beratung von Versionsverwaltungen  für Quellcode (SCM) [2014]Übersicht und Beratung von Versionsverwaltungen  für Quellcode (SCM) [2014]
Übersicht und Beratung von Versionsverwaltungen für Quellcode (SCM) [2014]
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
DWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS EntwicklersDWX 2017 - GIT im Leben eines VS Entwicklers
DWX 2017 - GIT im Leben eines VS Entwicklers
 
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
 
Ant im Detail
Ant im DetailAnt im Detail
Ant im Detail
 
JIRA at ImmobilienScout24
JIRA at ImmobilienScout24JIRA at ImmobilienScout24
JIRA at ImmobilienScout24
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance Reloaded
 
Mercurial
MercurialMercurial
Mercurial
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 

Mehr von inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

Mehr von inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
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