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

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

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

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

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>