From 59d0e0a9591e3dc50f15c47a71fdf97117d1ff7a Mon Sep 17 00:00:00 2001 From: neodarz Date: Wed, 24 Jan 2018 01:19:18 +0100 Subject: add more cheat --- cheat/.cheat/git | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 cheat/.cheat/git (limited to 'cheat/.cheat/git') diff --git a/cheat/.cheat/git b/cheat/.cheat/git new file mode 100644 index 0000000..bc1094a --- /dev/null +++ b/cheat/.cheat/git @@ -0,0 +1,154 @@ +# To set your identity: +git config --global user.name "John Doe" +git config --global user.email johndoe@example.com + +# To set your editor: +git config --global core.editor emacs + +# To enable color: +git config --global color.ui true + +# To stage all changes for commit: +git add --all + +# 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 +git stash + +# To stash changes with a message +git stash save "message" + +# To list all the stashed changes +git stash list + +# To 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 +git stash apply stash@{6} + +# To commit staged changes +git commit -m "Your commit message" + +# To edit previous commit message +git commit --amend + +# Git commit in the past +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 +git filter-branch --env-filter \ + 'if [ $GIT_COMMIT = 119f9ecf58069b265ab22f1f97d2b648faf932e0 ] + then + export GIT_AUTHOR_DATE="Fri Jan 2 21:38:53 2009 -0800" + export GIT_COMMITTER_DATE="Sat May 19 01:01:01 2007 -0700" + fi' + +# To removed staged and working directory changes +git reset --hard + +# To go 2 commits back +git reset --hard HEAD~2 + +# To remove untracked files +git clean -f -d + +# To remove untracked and ignored files +git clean -f -d -x + +# To push to the tracked master branch: +git push origin master + +# To push to a specified repository: +git push git@github.com:username/project.git + +# To delete the branch "branch_name" +git branch -D branch_name + +# To make an exisiting branch track a remote branch +git branch -u upstream/foo + +# To see who commited which line in a file +git blame filename + +# 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 + +# 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 +git --git-dir=../some_other_repo/.git format-patch -k -1 --stdout | git am -3 -k + +# View commits that will be pushed +git log @{u}.. + +# View changes that are new on a feature branch +git log -p feature --not master +git diff master...feature + +# 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! +git diff --no-index path/to/file/A path/to/file/B + +# To pull changes while overwriting any local commits +git fetch --all +git reset --hard origin/master + +# Update all your submodules +git submodule update --init --recursive + +# Perform a shallow clone to only get latest commits +# (helps save data when cloning large repos) +git clone --depth 1 + +# To unshallow a clone +git pull --unshallow + +# Create a bare branch (one that has no commits on it) +git checkout --orphan branch_name + +# Checkout a new branch from a different starting point +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 +git remote prune origin + +# The following can be used to 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 +git show :/cool + +# Undo parts of 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 +git revert + +# Pich 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 + +# Remove fucking '^M' at each of end of line (where 'file_fucked' is the file who contains '^M' char and 'file_ok' is the same file without this fucking char +tr -d $'\r' < file_fucked > file_ok -- cgit v1.2.1