On Fri, 2011-09-09 at 08:09 -0400, Greg Stein wrote:
> Greg Hudson said this is more akin to git stash than branches. I
> haven't used git's stashes to see how it actually differs from
> branches. I guess it is simply that changing branches leaves local
> mods, rather than stashing pseudo-reverts the local mods.
* Branches record tree states, while stashes record changesets as
applied to the working copy and index. You can "git stash", "git
checkout branchname", and "git stash pop" the changeset such that it is
now applied against the new branch, if it applies cleanly. You can do
similar things with branches using rebase, but the sequence of
operations would be different and more complicated.
* Stashes are a working copy feature, and aren't part of the history
model. This isn't necessarily an interesting distinction for us, but it
has some consequences within the universe of git--a subsidiary
repository's git fetch won't retrieve stashes, they won't be in the
target space of commit specifiers, you don't have to create commit
messages for them, etc..
Stashes don't make git more expressive than local branches and rebase,
but in some ways it's a useful UI concept to keep them separate.
> Mercurial calls it shelving.
Aha. I'll note that shelving isn't a core feature of Mercurial but an
extension. Even if there are aliases so the command is accessible via
both names, the feature needs to have a primary name (which will be how
it's documented in the book, etc.).
Received on 2011-09-09 16:38:49 CEST