Last active
September 16, 2019 06:03
-
-
Save bmarcot/8647350 to your computer and use it in GitHub Desktop.
Git cheat sheet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## <...>: a mandatory parameter | |
## [...]: an optional parameter | |
# Compare two versions of a file | |
$ git diff HEAD^^ HEAD main.c | |
$ git diff HEAD~2 HEAD main.c | |
# Create a patch from a diff between two branches | |
$ git format-patch -n <master>..<develop> | |
# Squash some commits together | |
$ git rebase -i HEAD~3 | |
# Format the last patch before sending it by email | |
$ git format-patch [--cover-letter] [--subject-prefix="PATCH v2"] HEAD^ | |
$ git format-patch [--cover-letter] [--subject-prefix="PATCH v2"] HEAD~1 | |
# Send patches by email | |
$ git send-email --to <email address> [--supress-cc=all] *.patch | |
# Checkout a remote branch | |
$ git checkout -b <new branch> origin/<remote branch> | |
# Get one-line commit messages for a range of commits | |
$ git log --oneline HEAD[^^]..HEAD | |
# Reverse a rebase | |
$ git reflog | |
$ git reset --hard HEAD@{<before the rebase>} | |
# Create a pull request for the last commit in the current branch, | |
# and send that pull request to maintainers or mailing list. | |
$ git request-pull <target repo/branch> <repo url> | mailx <email address> -s <message subject> | |
$ git request-pull origin/master git@...:project.git | mailx [email protected] -s "pull my patch, please" | |
# Diff a file in two different branches | |
$ git diff <branch 1> <branch 2> -- <file> | |
# List all tags | |
$ git tag -l | |
# Checkout from a given tag | |
$ git checkout -b <topic> tags/<tag name> | |
# Patch a file with a version of that file from another branch | |
$ git checkout --patch <branch> -- <file> | |
# Delete a remote branch | |
$ git push <remote> --delete <branch> | |
# Reset branch to origin/branch | |
$ git reset --hard origin/<branch> | |
# Revert merge from merge commit | |
$ git revert -m 1 <merge-commit> | |
# Cherry-pick multiple commits (A older than B, A included) | |
$ git cherry-pick A^..B | |
# Fixup commits (to fixup A) | |
$ git commit --fixup A | |
$ git rebase -i A --autosquash | |
# Editing the Author of Past Commits | |
$ git filter-branch --env-filter ' | |
WRONG_EMAIL="[email protected]" | |
NEW_NAME="New Name Value" | |
NEW_EMAIL="[email protected]" | |
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ] | |
then | |
export GIT_COMMITTER_NAME="$NEW_NAME" | |
export GIT_COMMITTER_EMAIL="$NEW_EMAIL" | |
fi | |
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ] | |
then | |
export GIT_AUTHOR_NAME="$NEW_NAME" | |
export GIT_AUTHOR_EMAIL="$NEW_EMAIL" | |
fi | |
' --tag-name-filter cat -- --branches --tags |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment