2
0
mirror of https://github.com/chubin/cheat.sheets synced 2024-11-03 15:40:17 +00:00

Improve formatting and descriptions of git

I've also maintained a column limit of 80, for smaller terminals.

Some of these description changes are superfluous, but either improve
clarity, or make things a touch more concise, I believe.
This commit is contained in:
terminalforlife 2020-02-02 20:47:50 +00:00
parent e6da32c2b1
commit 16fbc6f6eb

View File

@ -1,46 +1,45 @@
# To set your identity:
# Set your identity.
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
# To set your editor:
# Set your editor.
git config --global core.editor emacs
# To enable color:
# Enable color support for commands like `git diff`. Disable with `never` or
# partially disable -- unless otherwise applied -- with `false`.
git config --global color.ui true
# To stage all changes for commit:
git add --all
# Stage all changes for commit.
git add [--all|-A]
# To stash changes locally, this will keep the changes in a separate changelist
# called stash and the working directory is cleaned. You can apply changes
# from the stash anytime
# Stash changes locally. This will keep the changes in a separate changelist, -
# called 'stash', and the working directory is cleaned. You can apply changes
# from the stash at any time.
git stash
# To stash changes with a message
# Stash changes with a message.
git stash save "message"
# To list all the stashed changes
# List all the stashed changes.
git stash list
# To apply the most recent change and remove the stash from the stash list
# Apply the most recent change and remove the stash from the stash list.
git stash pop
# To apply any stash from the list of stashes. This does not remove the stash
# from the stash list
# Apply stash from the stash list, but does not remove the stash from the list.
git stash apply stash@{6}
# To commit staged changes
# Commit staged changes.
git commit -m "Your commit message"
# To edit previous commit message
# Edit previous commit message.
git commit --amend
# Git commit in the past
# Commit in the past. Newer versions of Git allow `--date="2 days ago"` usage.
git commit --date="`date --date='2 day ago'`"
git commit --date="Jun 13 18:30:25 IST 2015"
# more recent versions of Git also support --date="2 days ago" directly
# To change the date of an existing commit
# Change the date of an existing commit.
git filter-branch --env-filter \
'if [ $GIT_COMMIT = 119f9ecf58069b265ab22f1f97d2b648faf932e0 ]
then
@ -48,144 +47,142 @@ git filter-branch --env-filter \
export GIT_COMMITTER_DATE="Sat May 19 01:01:01 2007 -0700"
fi'
# To removed staged and working directory changes
# Remove staged and working directory changes.
git reset --hard
# To go 2 commits back
# Go 2 commits back.
git reset --hard HEAD~2
# To remove untracked files
# Remove untracked files.
git clean -f -d
# To remove untracked and ignored files
# Remove untracked and ignored files.
git clean -f -d -x
# To push to the tracked master branch:
# Push to the tracked master branch.
git push origin master
# To push to a specified repository:
git push git@github.com:username/project.git
# Push to a specified repository.
git push git@github.com:[USER_NAME]/[REPO_NAME].git
# To delete the branch "branch_name"
git branch -D branch_name
# Delete the branch "branch_name".
git branch -D [BRANCH]
# To make an existing branch track a remote branch
# Make an existing branch track a remote branch.
git branch -u upstream/foo
# To list all local and remote branches
# List all local and remote branches.
git branch -a
# To see who committed which line in a file
git blame filename
# See who committed which line in a file.
git blame [FILE]
# To sync a fork with the master repo:
git remote add upstream git@github.com:name/repo.git # Set a new repo
git remote -v # Confirm new remote repo
git fetch upstream # Get branches
git branch -va # List local - remote branches
git checkout master # Checkout local master branch
git checkout -b new_branch # Create and checkout a new branch
git merge upstream/master # Merge remote into local repo
git show 83fb499 # Show what a commit did.
git show 83fb499:path/fo/file.ext # Shows the file as it appeared at 83fb499.
git diff branch_1 branch_2 # Check difference between branches
git log # Show all the commits
git status # Show the changes from last commit
# Sync a fork with the master repo.
git remote add upstream git@github.com:name/repo.git # <-- Set a new repo.
git remote -v # <-- Confirm new remote repo.
git fetch upstream # <-- Get branches.
git branch -va # <-- List local - remote branches.
git checkout master # <-- Checkout local master branch.
git checkout -b new_branch # <-- Create and checkout a new branch.
git merge upstream/master # <-- Merge remote into local repo.
git show 83fb499 # <-- Show what a commit did.
git show 83fb499:path/fo/file.ext # <-- Show the file as it was in 83fb499.
git diff branch_1 branch_2 # <-- Check difference between branches.
git log # <-- Show all of the commits.
git status # <-- Show the changes from the last commit.
# Commit history of a set of files
# Display the commit history of a set of files.
git log --pretty=email --patch-with-stat --reverse --full-index -- Admin\*.py > Sripts.patch
# Import commits from another repo
# Import commits from another repo.
git --git-dir=../some_other_repo/.git format-patch -k -1 --stdout <commit SHA> | git am -3 -k
# View commits that will be pushed
# View commits which would be pushed.
git log @{u}..
# View changes that are new on a feature branch
# View changes which are new on a feature branch.
git log -p feature --not master
git diff master...feature
# Interactive rebase for the last 7 commits
# Interactive rebase for the last 7 commits.
git rebase -i @~7
# Diff files WITHOUT considering them a part of git
# This can be used to diff files that are not in a git repo!
# Show changes to files WITHOUT considering them a part of git. This can be
# used to diff files which are not part of a git repo!
git diff --no-index path/to/file/A path/to/file/B
# To pull changes while overwriting any local commits
# Pull changes, while overwriting any local commits.
git fetch --all
git reset --hard origin/master
# Update all your submodules
# Update all submodules.
git submodule update --init --recursive
# Perform a shallow clone to only get latest commits
# (helps save data when cloning large repos)
# Perform a shallow clone, to only get the latest commits, which helps to save
# data (good for limited data connections) when cloning large repos.
git clone --depth 1 <remote-url>
# To unshallow a clone
# Unshallow a clone.
git pull --unshallow
# Create a bare branch (one that has no commits on it)
# Create a bare branch; without any commits.
git checkout --orphan branch_name
# Checkout a new branch from a different starting point
# Checkout a new branch from a different starting point.
git checkout -b master upstream/master
# Reset local branch to upstream branch and then checkout it
# Reset local branch to upstream branch, then checkout it.
git checkout -B master upstream/master
# Remove all stale branches (ones that have been deleted on remote)
# So if you have a lot of useless branches, delete them on Github and then run this
# Remove all stale branches; ones that have been deleted on remote. So if you
# have a lot of useless branches, delete them on GitHub and then run this.
git remote prune origin
# The following can be used to prune all remotes at once
# Prune all remotes at once.
git remote prune $(git remote | tr '\n' ' ')
# Revisions can also be identified with :/text
# So, this will show the first commit that has "cool" in their message body
# Revisions can also be identified with `:/text`. So, this will show the first
# commit that has the string "cool" in its message body.
git show :/cool
# Undo parts of last commit in a specific file
# Undo parts of the last commit in a specific file.
git checkout -p HEAD^ -- /path/to/file
# Revert a commit and keep the history of the reverted change as a separate revert commit
# Revert a commit, but keep the history of the event as a separate commit.
git revert <commit SHA>
# Pick a commit from a branch to current branch. This is different than merge as
# this just applies a single commit from a branch to current branch
git cherry-pick <commit SHA1>
# Apply only the changes made within a given commit. This is different to the
# `merge` command, as it would otherwise apply all commits from a branch.
git cherry-pick [HASH]
# Undo last commit
# If you want to nuke commit C and never see it again
# Undo last commit. If you want to nuke commit C to never see it again:
# (F)
# A-B-C
# ↑
# master
git reset --hard HEAD~1
# Undo last commit
# If you want to undo the commit but keep your changes
# Undo last commit. If you want to undo the commit, but keep your changes:
# (F)
# A-B-C
# ↑
# master
git reset HEAD~1
# list files changed in ${commit_id}
git diff-tree --no-commit-id --name-only -r ${commit_id}
# List files changed in a given commit.
git diff-tree --no-commit-id --name-only -r [HASH]
# list files changed in ${commit_id}, porcelain way, meant to be user facing
# Porcelain-ly List files changed in a given commit; user-facing approach.
git show --pretty="" --name-only bd61ad98
# See everything you have done, across branches, in a glance,
# then go to the place right before you broke everything
# See everything you have done, across branches, in a glance, then go to the
# place right before you broke everything.
git reflog
git reset HEAD@{hash}
# To move your most recent commit from one branch and stage it on TARGET branch
# Move your most recent commit from one branch, to stage it on [BRANCH].
git reset HEAD~ --soft
git stash
git checkout TARGET
git checkout [BRANCH]
git stash pop
git add .