4. Ubuntu and Windows
● Commands here can be executed in the
respective OS as defined below
● Ubuntu
○ Can use their system terminal
● Windows
○ Select git bash in your Right-click context menu
5. git Hosting
Bitbucket Github
Unlimited public and private repositories Unlimited Public repositories
Cost based on number of users Cost based on number of repositories
Supports git and hg Supports git only
● Codeplane, Githost, Assembla, Cloudforge, Gitorious
● Bitbucket
Username - arulmurugan
E-Mail - arulmurugan@example.com
21. Status and History
● git diff
#Shows differences in uncommitted files / last commit
● git log
#Shows history of commits in the current branch
● git log --oneline --abbrev-commit
#Shows one line commit history with short commit id
● git log --graph --pretty --oneline --abbrev-commit
#Shows the history as graph
● git diff-tree --name-only -r <commit_id>
#Shows files changed in the commit
● git show <commit_id>
#Shows changes in the commit
22. History of file
● git log [filename]
#Shows commits for the file
● git log -p [filename]
#Shows commits for the file with changes
● git log --follow -p [filename]
#Shows commits for the file including renames
● git blame [filename]
#Shows author and commit per line of the file
● git blame -L 1,3 [filename]
#Shows author and commit from line 2 to line 3
● git commit --amend -m "More changes - now correct"
#To amend changes to previous commit before pushing
23. Remote repositories
● git remote
#Show the existing remote repos
● git remote show origin
#Show the details of remote repo origin
● git clone git@bitbucket.org:arulmurugan/dummy.git
#To clone remote repository
24. git stash
● Allows to save the current uncommitted
changes and checkout the last committed
revision.
● Allows you to pull in the latest changes
without conflicts.
● Afterwards you can restore the stashed
changes, which will apply the changes to the
current version of the source code.
25. git stash (Contd...)
● git stash save "stash message"
#To save uncommited changes as stash
● git stash list
#To view list of saved stashes
#stash@{0}: On master: Title changed
● git stash apply stash@{0}
#To apply the particular stash
● git stash drop stash@{0}
#To drop particular stash
● git stash clear
#To drop all saved stashes
● git stash pop
#To apply most recent stash and delete it from list of stashes
27. Reverting changes
● git clean - To remove newly added files
○ git clean -n
#To see what would happen
○ git clean -f
#To remove the files
● git checkout - To revert changed and deleted files
○ git checkout .
#To revert all changed files
○ git checkout [filename]
#To restore or revert the file
○ git checkout <commit_id>
#To checkout a particular commit
28. Reverting changes (Contd...)
● git reset [filename]
#To remove a file added by git add before pushing
● git checkout HEAD -- [dir_name]
#To recover an accidentally deleted directory in repo
● git revert <commit_id>
#To revert a particular commit
● git reset --hard HEAD~1
#To delete last 1 commit
● git reset --hard <sha1-commit-id>
#To delete upto a particular commit
● git push -f
#Push with force to push commit deletions
29. Reverting changes (Contd...)
● git reflog
#Shows a history of the complete changes of your
current branch based on the HEAD revision
● git reset --hard <commit_id>
#To revert to a commit shown in git reflog
30. Branches
● Branches are copies of the files from a certain
commit and they can be changed independently
from each other.
● The default branch is called master.
● Untracked files remain unchanged and are
available in the new branch. This allows you to
create a branch for unstaged and uncommitted
changes at any point in time.
31. Branches (Contd...)
● git branch
#List available branches
● git branch -a
#List available branches including remote branches
● git branch -r
#List remote branches only
● git branch <branch_name>
#To create new branch
● git checkout <branch_name>
#To switch to a branch
● git checkout -b <branch_name>
#To create a branch and switch to it
32. Branches (Contd...)
● git checkout -b <branch_name> master~1
#Create a new branch based on master without last commit
● git branch -d <branch_name>
#To delete a branch
● git push origin <branch_name>
#To push branch to remote
● git push origin --delete <branch_name>
#To delete a remote branch
● git checkout -b <branch_name> origin/<branch_name>
#To create a tracking branch
● git merge <branch_name>
#To merge specified branch with current branch
33. Retrieving files
● git show [reference]:[filename]
#To see contents of a file
# [reference] can be a branch, tag, HEAD or commit ID
● git show [reference]:[filename] > [filename_copy]
#To copy a file
● git log -- [filename]
#To see commit history of a file, even if deleted
34. Alias
● Allows you to setup your own git command
● git config --global alias.st 'git status'
#Set command "st" for git status
#Now git st can be used instead of git status
● git config --global alias.acm '!git add . -A && git commit'
#Set command "acm" for git add . and git commit
#Now you can use git acm "message" for commits
#Not supported in windows*
35. Submodules - Repos inside repos
● Allows you to include another Git repository
into a Git repository
● git submodule add [URL to Git repo]
#To add submodule to your repo
● After cloning a repo with submodules
○ git submodule init
#Creates local configuration file for submodules
○ git submodule update
#To clone submodules