Git - Version Control

Get Started. It's Free
or sign up with your email address
Rocket clouds
Git - Version Control by Mind Map: Git - Version Control

1. Version Control System (VCS)

1.1. Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.

1.2. Centralized Version Control Systems : (such as Git, Mercurial, Bazaar or Darcs)

1.3. The major difference between Git and any other VCS (Subversion and friends included) is the way Gitthinks about its data.

2. Gits basic

2.1. The mechanism that Git uses for this checksumming is called a SHA-1 hash.

2.2. The Three States

2.2.1. Committed means that the data is safely stored in your local database.

2.2.2. Modified means that you have changed the file but have not committed it to your database yet.

2.2.3. Staged means that you have marked a modified file in its current version to go into your next commit snapshots.

2.3. Git config

2.3.1. Config default text editor

2.3.2. Git Identity

2.3.3. Checking your settings

2.4. Getting a Git Repository

2.4.1. Initializing a repository in an existing directory

2.4.2. Cloning an Existing Repository

2.5. Recording Changes to the Repository

2.5.1. Checking the Status of Your Files

2.5.1.1. Short Status

2.5.2. Tracking New Files

2.5.3. Staging Modified Files

2.5.4. Ignoring Files

2.5.5. Viewing Your Staged and Unstaged Changes

2.5.5.1. Git Diff in an external tool

2.5.6. Committing your changes

2.5.7. Removing Files

2.5.8. Moving Files

2.5.9. Viewing the Commit History

2.5.9.1. Useful options for git log

2.5.10. Undoing things

2.5.10.1. Unstaging a Staged File

2.5.10.1.1. Git reset can be a dangerous command!

2.5.10.2. Unmodifying a Modified File

2.5.10.2.1. It’s important to understand that git checkout -- <file> is a dangerous command!

2.6. Working with Remotes

2.6.1. Showing Your Remotes

2.6.2. Adding Remote Repositories

2.6.2.1. Fetch all

2.6.3. Fetching and Pulling from Your Remotes

2.6.4. Pushing to Your Remotes

2.6.5. Inspecting a Remote

2.6.6. Renaming and Removing Remotes

2.7. Tagging

2.7.1. Listing Your Tags

2.7.2. Creating Tags

2.7.2.1. Annotated Tags

2.7.2.2. Lightweight Tags

2.7.2.3. Tagging Later

2.7.3. Sharing Tags

2.7.4. Checking out Tags

2.8. Git Aliases

3. Git Branching

3.1. Switching Branches

3.1.1. Clean state

3.2. Show graphs in console

3.3. Basic Merging

3.3.1. Basic Merge Conflicts

3.3.1.1. Conflict-resolution markers

3.3.1.2. Resolve

3.3.1.3. Mergetool

3.4. Branch Management

3.4.1. * character

3.4.2. Last commit of each branch

3.4.3. Merged and No-Merge Options

3.5. Branching Workflows

3.5.1. Long-Running Branches

3.5.2. Topic Branches

3.6. Remote Branches

3.6.1. Don't type your password every time

3.6.2. Remote tracking branches

3.6.3. Synchronize

3.6.4. Pushing

3.6.4.1. Pushing with different name

3.6.5. Tracking Branches

3.6.5.1. Change upstream branches

3.6.5.2. See what tracking branches you have set up

3.6.5.3. Update info from all remotes

3.6.6. Pulling

3.6.7. Deleting Remote Branches

3.6.8. Rebasing

3.6.8.1. Example: Rebasing the change introduced in C4 onto C3

3.6.8.1.1. After

4. Distributed Git

4.1. Distributed Workflows

4.1.1. Centralized Workflow

4.1.2. Integration-Manager Workflow

4.1.3. Dictator and Lieutenants Workflow

4.2. Commit Guidelines

4.3. Preparing a Release

4.3.1. The Shortlog

4.4. Generating a Build Number

5. Contributing to a Project

5.1. Forking Projects

5.2. The GitHub Flow

5.2.1. Creating a Pull Request

5.2.2. Pull Requests on Pull Requests

5.3. Special Files

5.3.1. README

5.3.2. CONTRIBUTING

5.4. Scripting GitHub

5.4.1. Services

5.4.2. Hooks

6. Git Tools

6.1. Revision Selection

6.1.1. Single Revisions

6.1.2. Short SHA-1

6.2. Ancestry References

6.2.1. Notes : Escaping the caret on Windows

6.3. Commit Ranges

6.3.1. Double Dot

6.3.2. Triple Dot

6.4. Interactive Staging

6.4.1. Staging and Unstaging Files

6.4.2. Staging Patches

6.5. Stashing and Cleaning

6.5.1. Add stash

6.5.2. List stash

6.5.3. Apply stash

6.5.4. Remove stash

6.5.5. Pop stash

6.5.6. Include untracked

6.6. Cleaning your Working Directory

6.7. Signing Your Work

6.7.1. Signing Tags

6.7.1.1. Verifying Tags

6.7.2. Signing Commits

6.8. Searching

6.8.1. Git Grep

6.8.2. Git Log Searching

6.9. Rewriting History

6.9.1. Changing the Last Commit

6.9.2. Reordering Commits

6.9.3. Splitting a Commit

6.9.4. Squashing Commits

6.10. The Nuclear Option: filter-branch

6.10.1. Removing a File from Every Commit

6.11. Advanced Merging

6.11.1. Aborting a Merge

6.11.2. Ignoring Whitespace

6.11.3. Manual File Re-merging

6.12. Submodules

6.12.1. Starting with Submodules

6.12.2. Cloning a Project with Submodules

6.12.3. Working on a Project with Submodules

6.12.3.1. Pulling in Upstream Changes