Git Cheatsheet
Creating and cloning a repository
Clone an existing repository from a URL
git clone https://urlToRepo.com/repoName.git
Clone an existing repository from a file and checkout a specific branch
git clone /path/to/repo/repoName.git -b branchName
Set up a new git repository in the current directory
git init
Staging files
Stage all new, modified, and deleted files
git add -A
Stage all modified and deleted files but not new (untracked) ones
git add -u
N.B. In git version 2.0 onwards git add -A and git add -u will operate on the entire working tree and not just the current path.
Stage a specific file or set of files
git add path/to/file1.txt file2.txt
N.B. In git version 1.x using git add <pathspec>
will only add new and modified files within the specified path-spec. From version 2.0 onwards git add <pathspec>
will also stage files that have been deleted within the path-spec.
Stage new and modified files in a specific directory (and deleted files in git version 2.x+)
git add path/to/dir
Stage new, modified, and deleted files in a specific directory (in version 1.x)
git add -A path/to/dir
Delete a file and stage the change in git
git rm path/to/file.txt
Delete a directory and its contents and stage the change in git
git rm -r path/to/dir
Committing
Commit staged files with a short commit message
git commit -m "Commit message"
Commit stages files with a custom author
git commit --author="John Doe <john@doe.com>" -m "Commit message"
Viewing repository status
View status of repository
git status
View abbreviated status of the repository
git status -s
The left column is the status of files in the staging area and the right column is the status of files in the working tree.
M = Modified, A = Added, D = Deleted, R = Renamed, ? = Untracked files.
Viewing repository history
Show the last 10 commit logs
git log -n 10
Show commit logs in a text graph format
git log --graph
Undoing mistakes
Change the last commit message
git commit --amend
Change the author of the last commit
git commit --amend --author="John Doe <john@doe.com>" -m "Commit message"
Branches
Create a new branch and switch to it
git checkout -b name_of_new_branch
List all branches (including remote branches)
git branch -a
Checkout an existing branch
git checkout name_of_existing_branch
Delete a branch
git branch -d name_of_branch
Remove local remote tracking branches that have been removed on the remote repository
git remote prune origin
Git Ignore
The .gitignore file specifies files that you don't what to include as part of your git repository
# Ignore .bak files in all directories
*.bak
# Ignore any files in a log/ directory
log/
# Ignore log/*.txt (but not log/foo/*.txt
log/*.txt
# Ignore all .txt files in a log directory or any of its sub directories
log/**/*.txt
Git Configuration
Set the committer name and email address globally
git config --global user.name "John Doe"
git config --global user.email john@doe.com
Set the committer name and email address for the current repository
git config user.name "John Doe"
git config user.email john@doe.com
Set the default text editor to nano
git config --global core.editor "nano"