Miscellaneous | Description |
---|---|
-C <path> |
Run as if git was started in <path> instead of the current directory |
git commit | Description |
---|---|
-a, -all | Automatically stage modified and deleted files and then commit |
-p, --patch | Interactively select which modified and deleted files to stage before committing |
--squash=<commit> |
Squash this commit with another one |
--author=<author> |
Override the author used for this commit |
-m <msg>, --message=<msg> |
Specify the commit message |
-n, --no-verify | Bypass the pre-commit and commit-msg hooks |
--amend | Amend the previous commit with staged changes added to it |
--amend --no-edit | Same as --amend but don't prompt to change the commit message, just use what was already there |
git add | Description |
---|---|
-n, --dry-run | Don't actually add the files, just show if they exist and/or will be ignored |
-f, --force | Allow adding otherwise ignored files |
-p | Interactively choose hunks of code to stage |
git reset | Description |
---|---|
HEAD <file> |
Unstage changes in the file already staged. Can also run this against directories for everything in the directory. |
--hard HEAD~<#> --hard <commit-hash> |
Reset the current branch back to a specific commit and point the branch name back to that commit |
git checkout | Description |
---|---|
-b <new_branch> <starting_point> |
Creates a new branch starting with commit pointed to by starting_point. If no starting point, then it starts at where HEAD currently points. If the starting point is a branch, then it will set that branch as the remote tracking branch (to disable this, add --no-track ). |
-f, --force | Proceed even if the working tree or index differs from HEAD. This will throw away local changes. |
--detach | Checkout for inspection and discardable experiments, rather than to work on that branch |
-p | Interactively select hunks to apply to the branch that you are checking out |
<commit_hash/branch/tag> path/to/file.txt |
Checkout file.txt as it exists in the provided hash. |
git diff | Description |
---|---|
--name-only |
Show only names of changed files |
--name-status |
Show only names and status of changed files |
-w |
Ignore whitespaces when comparing lines |
SHA1..SHA2 , SHA1 SHA2 |
Show diff between the head of SHA1 vs head of SHA2 (will show diff as if you are merging SHA2 to SHA1) |
SHA1...SHA2 |
Show diff between common ancestor commit of both branches vs the head of SHA2 (will show diff as if you are merging SHA2 into common anceestor) |
git push | Description |
---|---|
<remote> <branch> |
Normal push to a remote branch |
<remote> <branch>:<remote_branch> |
Push local branch to a differently named (not upstream) remote branch |
<remote> :<remote_branch> |
Deletes the remote branch on the remote repo |
--force-with-lease | Push force, but not if someone else has pushed up changes since you've pulled them down |
-f, --force | Forces a push even if commits are different. Data can be lost here and is not suggested for pushing to shared repos |
-u, --set-upstream | Set the remote branch as the default upstream to push to |
--tags | All refs under refs/tags are pushed |
git pull | Description |
---|---|
git pull <remote> <branch> |
Same as doing git fetch and then git merge FETCH_HEAD |
-r, --rebase | Rebase the current branch on top of the upstream branch after fetching |
git fetch | Description |
---|---|
<remote> |
Fetch from a remote repo |
--all | Fetch from all remote repos |
--tags | Fetch all tags from the remote in addition to branches fetched |
-p | Prunes any remote tracking branches that no longer exist on the remote repo |
git bisect | Description |
---|---|
git bisect start git bisect bad <commit> git bisect good <commit> |
Steps to starting a bisect |
git rebase |
Description |
---|---|
-i |
Rebase interactively, meaning you can choose commits to modify, remove, squash, reorder, etc. |
<branch1> <branch2> |
Rebases branch2 (or current branch if not specified) onto branch1 |
-i HEAD~3 |
Rebases (interactively) the current branch onto the commit at HEAD~3 |
git clone | Description |
---|---|
<remote_repo> |
Clones the remote repo down |
-b <name>, --branch <name> |
When cloning, point the local HEAD to the specified branch. |
git init | Description |
---|---|
git init |
Initializes an empty git repo in the current directory. You can run git init on an existing repo. It will just pick up any newly added templates/hooks in the ~/.git-templates directory. It won't overwrite existing templates/hooks even if they differ, it will just add new ones. |
--template=<template-directory> |
Choose the directory from which to use templates (defaults to ~/.git-templates) |
git merge | Description |
---|---|
<remote>/<branch> |
Merges remote branch into current branch |
--no-commit --no-ff <branch> |
Merges branch into your branch without making a commit, so you can view diff between them |
git tag | Description |
---|---|
<tagname> |
Set a tag on the current commit |
<tagname> sha |
Set a tag on the specific sha |
-l (or nothing) | List tags |
-d <tagname> |
Delete tag |
git push origin --delete <tagname> |
Delete a remote tag |
-f | Replace an existing tag with this new one |
-a | Create an annotated tag |
-m "Message" | Pass a message to the annotated tag |
git show | Description |
---|---|
git show <object> |
For commits it shows the log message and textual diff. For tags, it shows the tag message and the referenced objects. For plain blobs, it shows the plain contents. |
--name-only |
Show only names of changed files |
--name-status |
Show only names and status of changed files |
git remote | Description |
---|---|
add <name> <url> |
Adds a remote repo |
rename <old> <new> |
Rename a remote repo |
remove <name> |
Remove a remote repo |
set-url <name> <newurl> |
Set a new URL for the remote repo |
show <name> |
Shows info on the remote repo. Includes remote branches and which branches track with which remote branches. |
git branch | Description |
---|---|
git branch <branch-name> -u <remote>/<branch> |
Set tracking remote branch |
<branch-name> |
Creates a new branch at HEAD |
-d <branch>, -D <branch> |
Deletes a branch name, -D forces delete. |
-m <oldbranch> <newbranch>, -M <oldbranch> <newbranch> |
Renames a branch, -M forces the rename even if newbranch already exists. |
-r, --remotes | List remote branches |
-a, --all | List local and remote branches |
--list | List local branches |
git clean | Description |
---|---|
-f |
Force cleaning files even if clean.requireForce is set to true (default) |
-d |
Remove untracked directories also |
-i |
Interactive mode, lets you choose what files to clean |
-n |
Dry run |
git log | Description |
---|---|
--full-history -- <file> |
Show full history of the file when it existed, not just commits that it was changed (even if it is currently deleted) |
--no-merges |
Exclude merge commits |
SHA1..SHA2 , SHA2 ^SHA1 |
Show lot of commits that exist in SHA2 but not SHA1 |
SHA1...SHA2 |
Show log of commits that are only in SHA1 OR only in SHA2 (no commits that are in both branches) |
git shortlog | Description |
---|---|
-s ,--summary |
Provide a commit count summary instead of each commit description |
-n ,--numbered |
Sort the output by the number of commits per author |
-c ,--committer |
Show committer identities instead of authors |
-w<num> |
Limit number of characters wide to print |
git cherry | Description |
---|---|
git cherry -v origin/master |
Find commits yet to be applied to upstream (in this case origin/master) |
-v |
Show the commit subjects next to the SHA |
git ls-tree | Description |
---|---|
List the contents of a tree object | |
master | List the contents of the tree object in the master branch |
git cat-file | Description |
---|---|
Provide content or type and size information for repository objects | |
-p |
Pretty-print the contents of based on its type. Can use this on any object: commit, file, etc. |