Git is a distributed version control system to track changes in source code. Git was created by Linus Torvalds in 2005 for Linux kernel development. Git is the most widely used version control system. You could use git on a command line or using a graphical UI. You can use Git to travel back in time with respect to your source code and make changes.
This competency includes understanding git internals, rebasing interactively, git administration, debugging with bisect, understanding of different merge strategies, and being comfortable rewriting git history.
- Git Internals - Understanding git’s content-addressable file system, the internal working of git.
- Objects - Understanding each of these Objects - Commits, Trees & Blobs
- Plumbing Commands - Knowledge of how the git plumbing commands.
- Examination of the content in the object DB using the git cat-file command
- Understanding Git refs & pack files
- Rebase Interactive: Knowledge of how to use git rebase-interactive git rebase -i HEAD~4 to
- Remove commits
- Squash commits
- Change history by editing commits
- Splitting commits
- Reordering commits
- Git Administration - Knowledge of how to administer maintain and administer a git repo
- git filter-branch - knowledge of how to use the filter-branch option to rewrite a large number of commits
- git fsck
- git reflog
- git gc
- Debugging - Usage of the git bisect to find bugs by assigning test command to git bisect
- Merge Strategies - Git merge strategies - resolve, recursive, octopus, ours, subtree, custom
- Rewriting History - Understanding operations such as undo, rewrite history with help of git reflog command.
- Git server - Knowledge of how to run a git server and knowledge of different protocols
- Git in Apps - Integrating Git in your applications - Libgit2, Jgit, go-git.