git-presentation/Presentation.org

72 lines
1.7 KiB
Org Mode
Raw Normal View History

#+TITLE: Git 101
#+AUTHOR: Amin Kasrou Aouam
#+PANDOC_OPTIONS: pdf-engine:xelatex
#+PANDOC_METADATA: theme:metropolis
* Concepts
- Version control system (VCS)
- Distributed
- /De facto/ standard for code collaboration
* Reality
- Powerful system with hard to grasp concepts
#+CAPTION: xkcd
#+ATTR_HTML: :width 170
[[./assets/xkcd.png]]
* Structure of a git project
- The working directory is the folder where we want to manage our project
- The index is an intermediary step between the files in the directory and the commits
- A commit is a full snapshot (i.e. copy) of the contents of the working directory at some point
#+CAPTION: Structure of a project
#+ATTR_HTML: :width 300
[[./assets/staging.png]]
* Branches
- A branch is a way to diverge from the commits
- It allows multiple people to work on the same project without conflicts
[[./assets/branch.png]]
[[./assets/divergence.png]]
* Remotes
- The real advantage of git is allowing multiple people to work on the same project from different locations
- A server is used to synchronize the changes between the developers
#+CAPTION: Remote repositories
#+ATTR_HTML: :width 300
[[./assets/remote.png]]
* Merges
- The development of the developers has to be combined at some point
- We can merge a branch on another, importing all the changes that were done
#+CAPTION: Merging the branches Test and Master
#+ATTR_HTML: :width 300
[[./assets/merge.png]]
* Cheatsheet
- Add a file to the index
#+begin_src bash
git add file
#+end_src
- Commit the changes
#+begin_src bash
git commit
#+end_src
- Change the branch
#+begin_src bash
git checkout branch_name
#+end_src
- Send the changes to the server
#+begin_src bash
git push
#+end_src
- Get the changes from the server
#+begin_src bash
git pull
#+end_src