====== 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.//