Git commands
Base
Get help:
git help <command> git <command> --help man git-<command>
Set git user username and email:
# globally (for current user) git config --global user.name "Some One" git config --global user.email "someone@mail.com" # locally (for current project) git config user.name "Some One" git config user.email "someone@mail.com"
Manage repositories
Init:
git init .
git add main.c module.c
git commit -a -m 'init'
Add a remote repository:
git remote add github git@github.com:username/project.git
# or edit .git/config manually
Get information
View untracked files:
git status
View file history:
git log my_file
View commits differences:
git diff xxxxxxx..xxxxxxx # xxxxxxx - commit hash git diff master..my_branch # current uncommited changes: git diff
Diff for specified user:
git diff master..my_branch --author 'User Name'
View list of changed files:
git diff --name-only master..some_branch git diff --name-only SHA1 SHA2 git diff --name-only HEAD~10 HEAD~5
Show list of commits:
git log # for user got log --author 'User Name'
Show file from specified revision:
git show <treeish>:<file> git show HEAD~4:tests.py
Show changes history for specified line of code:
git blame path/to/file -L <line number>
Branches
Create a new branch:
git branch my_branch_name
git checkout my_branch_name
# or simpler:
git checkout -b my_branch_name
Pull the latest branch code from remote repository:
git pull origin my_branch
Pull latest changes from remote repository and ignore local changes:
git fetch git reset --hard origin/mybranch
Delete a local branch:
git branch -d the_local_branch
Delete a remote branch:
git push origin --delete branch_to_remove
Copy branch from origin:
git fetch git checkout -b new_branch origin/new_branch
Merge branch:
git commit -a -m 'some changes'
git checkout master
git merge my_branch --no-ff
Work with codebase
Push change to remote repository:
# some changes git commit -a -m 'Something was changed' git push origin master
Move or delete files:
git mv my_file.c new_name.c git rm my_file.c
Restore deleted files:
git checkout deleted_file.c
Extend latest commit:
# changes git commit -a -m 'Something was changed' git add some_new_file.c git commit -a --amend
Rollback the last commit:
git reset --hard HEAD^
Revert changes in one file:
# upstream master git checkout origin/master -- filename # the version from the most recent commit git checkout HEAD -- filename # the version before the most recent commit git checkout HEAD^ -- filename
Copy commit from one branch to another (cherry-pick):
git cherry-pick xxxxxxx # xxxxxxx - commit hash
Hide/restore not commited changes (stashing):
# move uncommented changes to stack git stash # show the stack git stash list # restore latest stashed changes git stash apply
Rebase (interactive):
git checkout master git pull origin master fir checkout my_branch git rebase -i origin/master # follow instructions # to squash all commits into one: mark all commits with "s" except the first one # force push: git push -f origin my_branch
Links: