diff --git a/data/git/git_stash.md b/data/git/git_stash.md new file mode 100644 index 0000000..305a580 --- /dev/null +++ b/data/git/git_stash.md @@ -0,0 +1,69 @@ +--- +title: "git stash" +tags: [ "data", "git" ] +requires: [ "git" ] +--- + +Save file-changes without committing anything. + +Change a file: + +```sh +file=README.md +fortune >> ${file} +git diff +git stash save +``` + +List which stashes you have: + + +```sh +git stash list + + stash@{1}: WIP on master: c21f102 init git +``` + +Make a new file, then stash it: + + +```sh +otherfile=file.log +fortune > ${otherfile} +git add ${otherfile} +stashname=logfile +git stash save ${stashname} +``` + +Now you can see two stashed changes, and the most recent has a name: + +```sh +git stash list + + stash@{0}: On master: logfile + stash@{1}: WIP on master: c21f102 init git +``` + +You can delete a stash by referring to its index number, or name (if it has one). + +```sh +choice=1 +git stash drop ${choice} + +choice=${stashname} +git stash drop ${choice} +``` + +Or just run `git stash drop` to remove the most recent (labelled `{0}`). + +Return stashed changes with an index number (or the most recent). + +```sh +git stash pop ${choice} +``` + +Delete all stashes: + +```sh +git stash clear +```