I sometimes work with a bare repository in dropbox, and work on local clones of it - only commits are shared though so it may not be ideal for this. A bare repository is basically one with no working directory (just has the .git directory), which means you can push to it without having to worry about conflicts. I have some notes at
http://dl.dropbox.com/u/1838149/web/git/git.html (work in progress, look under "To make and use a local git repository").
Also note that git stash save can take a quoted string parameter to describe your stash (e.g. git stash save "half way through updating tests for Foo"), and if you don't want a description you can use "git stash" (without "save").
Also for looking at your stashes (you can have lots of them)
- git stash list will show you a list of all your stashes. Note that they can be referred to by their index (e.g. stash@{0} for the top stash)
- git stash drop stash@{X} to discard a stash (they can tend to pile up). If you want to get rid of some changes, stash then drop is a fairly concise way to do so.
- git stash show stash@{X} to view which files are changed in a stash
- git diff stash@{X}~1 stash@{X} to see the actual changes. Whenever you make a stash, the parent state is stored as the stash's parent (which gives stashes a distinctive triangular look in the source tree), and the ~1 means go back one commit to the parent.
- git stash apply stash@{X} to apply the changes for a specific stash (without removing the stash from the list). Note that git stash pop is the equivalent of git stash apply stash@{0} followed by git stash drop stash@{0}
- also try hitting tab, git seems to be pretty good at filling in "stash@{" for me, which can save a lot of key strokes.
--
David