Git ist ein Versionskontrollsystem, welches in der Softwareentwicklung weit verbreitet ist. Es ist ein mächtiges Werkzeug, welches aber auch eine steile Lernkurve hat. Hier sind einige Ressourcen, die dabei helfen können, Git zu verstehen und zu nutzen.
basics
- Git Basics Video: https://www.fau.tv/clip/id/36106
- Cheatsheet: https://education.github.com/git-cheat-sheet-education.pdf
- Simple visual Tutorial: https://agripongit.vincenttunru.com/
interactive tutorial
help !?!
get out of a bad situation without yet knowing git terminology to google stuff:
Verständnis
- A Visual Git Reference: https://marklodato.github.io/visual-git-guide/index-en.html
- Rebasing vs. Merging: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
Games to learn git
Tools (neben git an sich)
- in Editor/IDE integrierte (z.B. in VSCode oder IntelliJ/PyCharm/Jetbrains IDEs)
- TUI: https://github.com/extrawurst/gitui oder https://github.com/jesseduffield/lazygit
- Diff/Merge Tools: in editor/IDE oder z.B. http://meldmerge.org/
Book & Documentation
- Book (ausführliche Erklärungen): https://git-scm.com/book/en/v2
- Docs / Man-Pages: https://git-scm.com/docs
Einzelne Themen
rebase
Disclaimer: “merge vs. rebase” ist ein ähnlich polarisierendes Thema wie “tabs vs spaces”, “theismus vs. atheismus” oder “kapitalismus vs. kommunismus”. Die Wahrheit liegt meist irgendwo dazwischen auch wenn die Indizien meist eher für eine Seite sprechen ;)
Hier eine sehr gute Erklärung, was rebasing ist:
patches
Man kann einzelne commits auch als sogenannte Patches “exportieren” (Text-Dateien in denen alle Informationen eines commits maschinen- und menschenlesbar gespeichert sind).
Einige große Projekte wie der Linux Kernel oder PostgreSQL arbeiten ausschließlich durch das Teilen solcher Patches über eine [Mailingliste] (/posts/email/#mailing-lists). Das scheint auf den ersten Blick etwas umständlich und veraltet. Auf den zweiten Blick ist damit aber ein relativ einfacher und bequemer Workflow möglich.