Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
basics.html 9.59 KiB
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="author" content="Dirk Sarpe and Christian Krause" />
    <title>git basics</title>
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <link rel="stylesheet" href="reveal.js/css/reveal.css" />
    <link rel="stylesheet" href="reveal.js/lib/css/zenburn.css" />
    <style type="text/css">code{white-space: pre;}</style>
    <link rel="stylesheet" href="reveal.js/css/theme/black.css" id="theme" />
    <link rel="stylesheet" href="css/fork-me-ribbon.css" />
  </head>

  <body>

    <!-- start of slides -->

    <div class="reveal">
      <div class="slides">
        <section>
          <section id="title" data-markdown>
            # git basics
            ## for beginner-level git users

            notes:
            - if you have questions ask them right away
            - hand out cheat sheets later, no need to write stuff down
          </section>

          <section id="intro-objectives" data-markdown>
            ## objectives

            - teach you to fish
            - hands-on experience
            - use version control!
            - collaborate!
          </section>

          <section id="intro-about-me" data-markdown>
            ## about me

            - scientific computing support @ idiv since 2014
            - happy git user since 2010

            > There will never be a better version control system than git.
            >
            > -- Christian Krause, Chemnitz 2017
          </section>

          <section id="intro-about-today" data-markdown>
            ## about today

            be able to ...

            1.  use git in **ALL** your projects
            2.  collaborate with each other

            ... that is mission accomplished.

            notes:
            - there is time for fancy stuff later
            - take a few weeks getting used to git
            - delay is good to grow your own experience
            - growing pain is how we learn
          </section>

          <section id="intro-you" data-markdown>
            ## about you

            ![people](img/people.jpg)

            name, job, git experience, why git?
          </section>

          <section id="intro-about-git" data-markdown>
            ## about git

            1.  **records changes to a repository**

                content, who, when, message
            2.  **best tool for the job**

                technical, usability, community

            notes:
            - the fact that content is organized in files and directories is
              only incidental
            - for git to be useful, content has to be text
          </section>
        </section>

        <section>
          <section id="motivation" data-markdown>
            # motivation

            > Why should I use git?
          </section>

          <section id="motivation-avoid-mess" data-markdown>
            ## motivation #1
            ### avoid mess

            ![blah](img/draft_mess.png)
          </section>

          <section id="motivation-want-structure" data-markdown>
            ## motivation #1
            ### want structure

            ![blah](img/gitk-pretty-history.png)
          </section>

          <section id="motivation-playground" data-markdown>
            ## motivation #2
            ### throw-away playgrounds

            ![playground](img/motivation-throwaway-playground.svg)

            notes:
            - test stuff without interfering
              - throw away if garbage
              - integrate if good
            - switch back and forth
            - (done right) decision based on regression testing
          </section>

          <section id="motivation-collaboration" data-markdown>
            ## motivation #3
            ### collaboration made easy

            <!-- do not fix this typo -->
            > This text cuntains a typo.

            notes:
            - demo GitLab
              - [go to project](https://git.idiv.de/sc/edu/git-seminar)
              - check if typo still in master
              - edit
              - change **target branch** to create merge request
            - commit message:
                ```
                fixes typo

                learn how to use a spell checker
                ```
          </section>

          <section id="motivation-creative-use" data-markdown>
            ## motivation #4
            ### the creative use of git award
            #### goes to Michael Schilli

            ```yml
            videos:
              - id: '_3i5yVoTvCs'
                title: 'How to flip German pancakes'
              - id: 'brPfE66FC24'
                title: 'Tivo Stream Cooling Fan Replacement'
            ```

            ```console
            $ youtube-sync -i videos.yml
            _3i5yVoTvCs: Unchanged
            brPfE66FC24: Updated OK
            ```

            source: [Linux Magazin](http://www.linux-magazin.de/) 2018/01
          </section>

          <section id="motivation-use-everywhere" data-markdown>
            ## motivation #e
            ### use version control for
            # *everything*

            | common       | less frequent   | esoteric?       |
            | ------------ |:---------------:| ---------------:|
            | software     | presentation    | youtube         |
            | blog         | paper / thesis  | soundboard      |
            | user config  | task management | drinking games  |

            notes:
            - if it doesn't support git don't use it
          </section>

          <section id="motivation-automation" data-markdown>
            ## motivation #a
            ### automation

            - software testing
            - build app and deploy to app store
            - put presentation on web server

            *(see advanced seminar)*
          </section>
        </section>

        <section>
          <section id="start" data-markdown>
            # let's get started

            notes:
            - git is simple and complex
            - git seems complex for 2 reasons:
              - you're unfamiliar with command line
              - there are a lot of choices
            - only X (TODO) theory pages
            - I'm gonna dumb it down for you
              - aka we'll stick to the simple parts
          </section>

          <section id="cheatsheet" data-markdown>
            # [cheat sheet](https://idiv-biodiversity.github.io/git-cheat-sheet/)
          </section>

          <section id="cli" data-markdown>
            ## command line

            - Ellen Ripley uses command line
            - Chuck Norris uses command line
          </section>

          <section id="os" data-markdown>
            ## os packages

            **Linux:** bash and git

            **Mac:** bash and git

            **Windows:** cmder
          </section>

          <section id="setup" data-markdown>
            ## setup

            ```bash
            # identity
            git config --global user.name  'Jane Doe'
            git config --global user.email 'jane.doe@feminism.org'

            # colors
            git config --global color.ui auto

            # aliases
            git config --global alias.unstage 'reset HEAD --'
            git config --global alias.lol \
              'log --graph --decorate --oneline --all'
            ```
          </section>

          <section id="demo" data-markdown>
            ## my project

            demo

            notes:
            - git init hello
            - README.md
            - LICENSE
            - TODO really talk about licenses? I should, because it's
              important, but it takes time away from other things ...
            - src/hello.py
          </section>
        </section>

        <section id="webapps" data-markdown>
          ## web apps

          - GitHub demo
          - GitLab demo
        </section>

        <section id="eof" data-background="img/trex.png">
          <h1>EOF</h1>
        </section>
      </div>
    </div>
    <!-- fork me ribbon -->

    <div class="fork-me-ribbon-wrapper right">
      <div class="fork-me-ribbon">
        <a href="https://git.idiv.de/sc/edu/git-seminar">
          fork me
        </a>
      </div>
    </div>

    <!-- reveal.stuff -->

    <script src="reveal.js/lib/js/head.min.js"></script>
    <script src="reveal.js/js/reveal.js"></script>

    <script>
      Reveal.initialize({
        controls: true,
        progress: true,
        slideNumber: true,
        history: true,
        center: true,
        keyboard: true,
        maxScale: 1.5,
        slideNumber: false,
        theme: Reveal.getQueryHash().theme,
        transition: Reveal.getQueryHash().transition || 'default',

        dependencies: [
          { src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
          { src: 'reveal.js/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
          { src: 'reveal.js/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
          { src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
          { src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
          { src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
        ]
      });
    </script>
  </body>
</html>