Subject: Re: question concerning branches

From: Jakub Narebski <[email-masked]>
Date: Wed, 19 Aug 2009 12:08:39 -0700 (PDT)

[email-masked] (Ingo Brueckl) writes:

> Avery Pennarun <[email-masked]> writes:
> 
> > You seem to have forgotten the "git commit" step before switching back
> > to master.
> 
> No, I passed over the commit in my example. I know that after the commit the
> things are as they ought to be, but what if I can't do a commit because I am
> in the middle of coding and have to have a break?

Then you use git-stash.  It was invented for that.
 
> > You have a modified file in your repository; what did you *want* to happen
> > when you switched branches?
> 
> I want an unchanged file in master if I switch there (because I worked in a
> different branch) and a changed version in the test branch.
> 
> Why is the *master* different depending on whether my work in test in still
> going on or committed?!

Branches are about commits.  State of a working directory doesn't
belong to a branch (in Git).  Learning concepts behind Git would help
you in understanding it (Git is very consistent), which in turn would
help in using it.

What about untracked files?  Do you want to lose them when you switch
branches?

> 
> Actually, I cannot image how branches are practicable if I always have to
> have in mind possibly still uncommitted work. Shouldn't it be git's work
> to ensure that master will remain it was when branching?
> 
> Without git I'd make a copy for testing new features. With git, it seems that
> I have to do the same (a clone). This is what I don't understand.

You finish old work (or stash it away), _then_ you begin new work.

> 
> > (Many people find the current behaviour very convenient.)

Take the following example.  You started coding some feature on
'master' branch, then you realized that this feature is more
complicated than you thought at first, so it should be developed in
separate topic branch.  You do "git checkout -b featureA", and voila
you are now coding on feature branch 'featureA'.

> > You might also want to look at the "git stash" command.
> 
> Yes, but isn't it annoying to leave the test branch always either with stash
> or commit in order to have an unchanged master?!

No, it isn't.

-- 
Jakub Narebski

Git User's Survey 2009: http://tinyurl.com/GitSurvey2009