What is Git ?

Git is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.

Basic Commands:

git --version
git config --global user.name "<user-name>"
git config --global user.email "<user-email-ID>"
git config --global --list
git config --local --list
git help <verb>
git <verb> --help
git init # For initialising a repository with git
rm -rf .git # To stop tracking
touch .gitignore # put all unwanted files which do not want to git

Save changes and pushing:

git status
git add -A # Adds files to staging area
git commit -m "Message"
git pull origin master # If remote is set
git push origin master

Create a new git repo with existing code :

git init           # In the folder. Also create a new repo in GitHub
git add -A
git commit -m "message"
git remote add origin <link_to_repo>
git push -u origin master

Branches :

To Create branch -git branch                 # To check the current branch
git branch my_branch # To initialise a branch
git checkout my_branch # To change the branch
git checkout -b my_branch # Single command for above two operations
Merging Branches -git checkout master
git pull origin master
git branch --merged
git merge my_branch
git push origin master
Deleting a Branch - git branch --merged # To check if everything is merged correctly
git branch -d my_branch # Deleted locally
git branch -D my_branch # Delete branch forcefully, if not merged
git branch -a # To check
git push origin --delete my_branch

Git revert :

git revert <hash-of-commit>

Additional commands :

git add . # Stage all the changes including untracked and .dot files# List out the differences 
git diff # In working directory
git diff --staged # In staging area
git diff hash1 hash2 # Between two commits via hashes
# Discard the changes in a working directory
git checkout <filename> # For a single file
git checkout -- . # All tracked files
git clean -df # All untracked files
# Remove files from staging area and put them back into working directory
git reset <filename> # For a single file
git reset # To remove everything
# Logs
git log # To check the various commits
git log -p # Log with patches
git log -2 # For last 2 commits
git log --stat # To see the changes
git log --oneline # All commit messages in single line
# gitignore
git rm --cached <file name> # ignore file that is already checked in
git rm --cached -r <folder name> # ignore folder that is already checked in
# Remote
git remote # List of all remotes
git remote -v # Be a little more verbose
git remote add <remote name> <url> # To set a remote

Student Developer