Git.md
... ...
@@ -1,4 +1,58 @@
1
+Git is a widely used distributed version control system. On this page, I collected different resources, from how to learn Git as a beginner, to mastering advanced use cases. Enjoy!
2
+
3
+## Content
4
+
5
+- [Git at first sight](#git-at-first-sight)
6
+ - [Cheat Sheets](#cheat-sheets)
7
+ - [Quicklinks](#quicklinks)
8
+- [Interesting reads](#interesting-reads)
9
+- [Learning Git](#learning-git)
10
+ - [The Git Parable](#the-git-parable)
11
+ - [Basics](#basics)
12
+ - [Learning (Git) by doing](#learning-git-by-doing)
13
+ - [Intermediate](#intermediate)
14
+ - [Advanced](#advanced)
15
+- [Specific Commands](#specific-commands)
16
+
17
+## Git at first sight
18
+
19
+### Cheat Sheets
20
+
21
+Cheat sheets are a great way to keep an overview over all the different commands and what they do. Many cheat sheets exist, so I will highlight the ones I found most interesting.
22
+
23
+Two rather unconventional ones:
24
+
25
+- Interactive Cheat Sheet (Webapp): [https://ndpsoftware.com/git-cheatsheet.html](https://ndpsoftware.com/git-cheatsheet.html)
26
+- Escape a git mess, step-by-step: [http://justinhileman.info/article/git-pretty/git-pretty.png](http://justinhileman.info/article/git-pretty/git-pretty.png)
27
+
28
+And two conventional ones:
29
+
30
+- Github Education Cheat Sheet: [https://education.github.com/git-cheat-sheet-education.pdf](https://education.github.com/git-cheat-sheet-education.pdf)
31
+- Git Cheat Sheet listing the most important basic commands: [https://github.com/nerdgirl/git-cheatsheet-visual/blob/master/gitcheatsheet.pdf](https://github.com/nerdgirl/git-cheatsheet-visual/blob/master/gitcheatsheet.pdf)
32
+
33
+### Quicklinks
34
+
35
+- Interatively visualizing commits and branches, including merging, rebasing, and simulating a remote repository: [https://learngitbranching.js.org/?NODEMO&locale=en_US](https://learngitbranching.js.org/?NODEMO&locale=en_US)
36
+
37
+## Interesting reads
38
+
39
+- [The (written) unwritten guide to pull requests](https://www.atlassian.com/blog/git/written-unwritten-guide-pull-requests)
40
+- Blog-Series about more advanced topics about the usage and the environment of git.
41
+ - Creating the perfect commit: [https://css-tricks.com/creating-the-perfect-commit-in-git/](https://css-tricks.com/creating-the-perfect-commit-in-git/)
42
+ - Branching strategies: [https://css-tricks.com/branching-strategies-in-git/](https://css-tricks.com/branching-strategies-in-git/)
43
+ - Better collaboration with pull requests: [https://css-tricks.com/better-collaboration-with-pull-requests/](https://css-tricks.com/better-collaboration-with-pull-requests/)
44
+ - Merge conflicts: [https://css-tricks.com/merge-conflicts-what-they-are-and-how-to-deal-with-them/](https://css-tricks.com/merge-conflicts-what-they-are-and-how-to-deal-with-them/)
45
+ - Rebase vs Merge: [https://css-tricks.com/rebase-vs-merge-integrating-changes-in-git/](https://css-tricks.com/rebase-vs-merge-integrating-changes-in-git/)
46
+ - Interactive Rebase: Clean up your Commit History [https://css-tricks.com/interactive-rebase-clean-up-your-commit-history/](https://css-tricks.com/interactive-rebase-clean-up-your-commit-history/)
47
+ - Cherry-Picking Commits in Git [https://css-tricks.com/cherry-picking-commits-in-git/](https://css-tricks.com/cherry-picking-commits-in-git/)
48
+ - Using the Reflog to Restore Lost Commits [https://css-tricks.com/using-the-reflog-to-restore-lost-commits/](https://css-tricks.com/using-the-reflog-to-restore-lost-commits/)
49
+
50
+## Learning Git
51
+
1 52
### The Git Parable
53
+
54
+The Git Parable should be read or listened to by everyone, in my opinion. It's a great way to learn Git by understanding why it was designed the way it is today. Here, a short quote from the first section of the parable:
55
+
2 56
> The following parable will take you on a journey through the creation of a Git-like system from the ground up.
3 57
> Understanding the concepts presented here will be the most valuable thing you can do to prepare yourself to harness the full power of Git.
4 58
> The concepts themselves are quite simple, but allow for an amazing wealth of functionality to spring into existence.
... ...
@@ -10,36 +64,23 @@ Only text, no visuals.
10 64
- Slides from the talk: [https://github.com/jherland/git\_parable/blob/master/git\_parable.pdf](https://github.com/jherland/git_parable/blob/master/git_parable.pdf)
11 65
- Shorter video with text-to-speech audio of the original text and the slides of Johan Herland: [https://www.youtube.com/watch?v=GyHdoGZY69E&ab\_channel=JayneTheGrateful](https://www.youtube.com/watch?v=GyHdoGZY69E&ab_channel=JayneTheGrateful)
12 66
13
-### Learning (Git) by Doing
14
-- Hands-on step-by-step guide from the basics to advanced stuff: [https://gitimmersion.com/index.html](https://gitimmersion.com/index.html)
15
-This guide is creating a small project in the ruby programming language, but it seems like you don't need to know ruby in order to follow the guide.
16
-- Program for a playful introduction to the most important git commands: [https://ohmygit.org/](https://ohmygit.org/)
17
-- Website for learning branching and modifying history in git: [https://learngitbranching.js.org/](https://learngitbranching.js.org/)
18
-This tutorial only teaches some parts of git! Some parts are not covered at all, but the other parts are covered beyond the basics.
19
-
20
-### Git Cheat Sheets
21
-- Interactive Cheat Sheet: [https://ndpsoftware.com/git-cheatsheet.html](https://ndpsoftware.com/git-cheatsheet.html)
22
-- Github Education Cheat Sheet: [https://education.github.com/git-cheat-sheet-education.pdf](https://education.github.com/git-cheat-sheet-education.pdf)
23
-- Git Cheat Sheet listing the most important basic commands: [https://github.com/nerdgirl/git-cheatsheet-visual/blob/master/gitcheatsheet.pdf](https://github.com/nerdgirl/git-cheatsheet-visual/blob/master/gitcheatsheet.pdf)
24
-- Escape a git mess, step-by-step: [http://justinhileman.info/article/git-pretty/git-pretty.png](http://justinhileman.info/article/git-pretty/git-pretty.png)
25
-
26 67
### Basics
68
+
27 69
- Extensive Guide by Atlassian about many git commands (what they do, how to use them, and how they work): [https://www.atlassian.com/git/tutorials/setting-up-a-repository](https://www.atlassian.com/git/tutorials/setting-up-a-repository)
28 70
- Git for the lazy: [https://wiki.spheredev.org/index.php/Git\_for\_the\_lazy](https://wiki.spheredev.org/index.php/Git_for_the_lazy)
29 71
A very quick and shallow guide on how to get started with git.
30 72
- Talk “Introduction to Git” by Scott Chacon: [https://www.youtube.com/watch?v=ZDR433b0HJY&ab\_channel=InfoQ](https://www.youtube.com/watch?v=ZDR433b0HJY&ab_channel=InfoQ)
31 73
This talk seems to cover the basics on how to get started, but also with a few internals mixed in.
32 74
75
+### Learning (Git) by Doing
76
+- Hands-on step-by-step guide from the basics to advanced stuff: [https://gitimmersion.com/index.html](https://gitimmersion.com/index.html)
77
+This guide is creating a small project in the ruby programming language, but it seems like you don't need to know ruby in order to follow the guide.
78
+- Program for a playful introduction to the most important git commands: [https://ohmygit.org/](https://ohmygit.org/)
79
+- Website for learning branching and modifying history in git: [https://learngitbranching.js.org/](https://learngitbranching.js.org/)
80
+This tutorial only teaches some parts of git! Some parts are not covered at all, but the other parts are covered beyond the basics.
81
+
33 82
### Intermediate
34
-- Blog-Series about more advanced topics about the usage and the environment of git.
35
- - Creating the perfect commit: [https://css-tricks.com/creating-the-perfect-commit-in-git/](https://css-tricks.com/creating-the-perfect-commit-in-git/)
36
- - Branching strategies: [https://css-tricks.com/branching-strategies-in-git/](https://css-tricks.com/branching-strategies-in-git/)
37
- - Better collaboration with pull requests: [https://css-tricks.com/better-collaboration-with-pull-requests/](https://css-tricks.com/better-collaboration-with-pull-requests/)
38
- - Merge conflicts: [https://css-tricks.com/merge-conflicts-what-they-are-and-how-to-deal-with-them/](https://css-tricks.com/merge-conflicts-what-they-are-and-how-to-deal-with-them/)
39
- - Rebase vs Merge: [https://css-tricks.com/rebase-vs-merge-integrating-changes-in-git/](https://css-tricks.com/rebase-vs-merge-integrating-changes-in-git/)
40
- - Interactive Rebase: Clean up your Commit History [https://css-tricks.com/interactive-rebase-clean-up-your-commit-history/](https://css-tricks.com/interactive-rebase-clean-up-your-commit-history/)
41
- - Cherry-Picking Commits in Git [https://css-tricks.com/cherry-picking-commits-in-git/](https://css-tricks.com/cherry-picking-commits-in-git/)
42
- - Using the Reflog to Restore Lost Commits [https://css-tricks.com/using-the-reflog-to-restore-lost-commits/](https://css-tricks.com/using-the-reflog-to-restore-lost-commits/)
83
+
43 84
- Visual Git Reference: [http://marklodato.github.io/visual-git-guide/index-en.html](http://marklodato.github.io/visual-git-guide/index-en.html)
44 85
Visualizations about how common git commands work.
45 86
... ...
@@ -50,8 +91,10 @@ A document explaining the internals of git (but also giving an introduction for
50 91
Guide for people that know how to use git, but want to learn something about the internals of git.
51 92
- Advanced Git topics by Atlassian: [https://www.atlassian.com/git/tutorials/advanced-overview](https://www.atlassian.com/git/tutorials/advanced-overview)
52 93
53
-### Specific commands
54
-- `git log --all --color --graph --pretty=format:'%Cred%h%Creset -%C(bold blue)%d%Creset %s %Cgreen(%cr) %C(yellow)<%an>%Creset' --abbrev-commit`
94
+## Specific commands
95
+
96
+The following is a list of some commands that are not part of the absolute basics, but worth knowing.
97
+
55 98
- `git stash`: [https://www.atlassian.com/git/tutorials/saving-changes/git-stash](https://www.atlassian.com/git/tutorials/saving-changes/git-stash)
56 99
- `git revert`: [https://www.atlassian.com/git/tutorials/undoing-changes/git-revert](https://www.atlassian.com/git/tutorials/undoing-changes/git-revert)
57 100
- `git bisect`: [https://git-scm.com/docs/git-bisect](https://git-scm.com/docs/git-bisect)