====== git == Git is just your ordinary overly complicated* version control system. I'm really great at //doing// stuff with ''git'', especially things I didn't intend! :) Here's a useful collection of ways to get yourself out of your own self-created git jams. ===== How To Undo Stuff == ==== Revert a single file == git status And near the top of the output are instructions. ==== Revert changes made to local copy == **Warning: there is no confirmation prompt! Don't type this unless you really mean bring your local copy back in sync with the current branch!** git checkout . ==== Unstage a staged file or directory == From [[https://stackoverflow.com/questions/348170/how-to-undo-git-add-before-commit|stackoverflow.]] git reset ==== Change a previous commit == If you haven't pushed it yet, it is possible to make a new commit that is automatically merged with the previous commit. Stage the changes you need to add to the previous commit with ''git add'' first, then: git commit --amend This command will open ''$EDITOR'' for editing of the commit message and then merge the staged changes with the previous commit. To avoid editing the commit message, include ''--no-edit''. ==== Undo the previous commit == git commit -m "Something terribly misguided" # oops! # this line reverts the previous commit git reset HEAD~ ===== Other Useful Notes == ==== Get a diff including all the changes between two revisions == git diff ^.. ==== Merge Squash == git merge --squash Applies all of the changes made to '''' to the working copy as a single set of //staged// changes which is ready to be committed. Use ''git commit'' as per usual. ==== List Remote Branches == After initially cloning a repository, git is only aware of the the default branch, which is usually ''master''. $git branch * master Use ''-a'' to list remote branches: $git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/release ===== Misc Tasks == ==== Show only the files that are modified as a commit == This removes the diff lines from the ''show'' command (''+''/''-'' lines): $git show --name-only //*Compared to other version control systems.//