threads / discuss / 186

Switching between branches

Subject: Switching between branches

## tl;dr

4 messages between Apr 21, 2005 and Apr 21, 2005.

replies: 3people: 3as markdown or json

Pavel Roskin· Apr 21, 2005, 01:42 UTC · lore
Hello!

Perhaps it's a naive question, but how do I switch between branches? I mean an equivalent of "svn switch" or "cvs update -r branch" that would reuse the existing working directory.

I tried to switch a git-pasky working directory to the linus branch.
Here's what I tried:

git track linus git cancel git pull git cancel git merge linus git cancel

After all that I found that README is still from the pasky branch.

Then I tried "git merge -b pasky linus" - this actually changed the files to the linus branch, but it didn't remove files specific to git-pasky. Also, I'm surprised that I had to specify "-b pasky", as if the currently checked out branch is unknown.

I'm using git-pasky 0.6.2.
-- 
Regards,
Pavel Roskin
Petr Baudis· Apr 21, 2005, 07:31 UTC · re: Pavel Roskin · lore

Re: Switching between branches

Dear diary, on Thu, Apr 21, 2005 at 03:42:39AM CEST, I got a letter where Pavel Roskin <proski@gnu.org> told me that...

> Hello!
Hello,
> Perhaps it's a naive question, but how do I switch between branches?  I
> mean an equivalent of "svn switch" or "cvs update -r branch" that would
> reuse the existing working directory.

you can't. There was 'git update' (and intermediate never-committed 'git switch'), but I decided not to support it for now, since I don't have any compelling usage case for it. Do

	git fork my-linus ~/my-linus linus

and you will get a local clone of Linus' branch in ~/my-linus, tracking and everything.

> Then I tried "git merge -b pasky linus" - this actually changed the
> files to the linus branch, but it didn't remove files specific to
> git-pasky.  Also, I'm surprised that I had to specify "-b pasky", as if
> the currently checked out branch is unknown.

Since git merge's purpose is to _merge_, not _switch_, so it picks the common ancestor by default; another disadvantage is that this happens on top of your local tree, but your history will record it as a merge which shares both linus and my history, which isn't quite right. What is peculiar, though, is that it didn't remove the files specific to git-pasky.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor
Matthias Urlichs· Apr 21, 2005, 14:12 UTC · re: Petr Baudis · lore

Re: Switching between branches

Hi, Petr Baudis wrote:
Show 9 quoted lines
> Hello,
> 
>> Perhaps it's a naive question, but how do I switch between branches?  I
>> mean an equivalent of "svn switch" or "cvs update -r branch" that would
>> reuse the existing working directory.
> 
> you can't. There was 'git update' (and intermediate never-committed 'git
> switch'), but I decided not to support it for now, since I don't have any
> compelling usage case for it.

I do -- I have a project which builds several slightly-customized versions, and I'd like to keep the generated objects around if possible.

So I just build one version, then "git cancel FOO" to the next version, and let the make rules take care of rebuilding what needs to be rebuilt.

("cancel" already does most of the job anyway, i.e. cleanup stuff which the build process might have changed that it shouldn't have.)

Cf. the last of the patches I've just mailed to the list.
-- 
Matthias Urlichs
Petr Baudis· Apr 21, 2005, 16:39 UTC · re: Matthias Urlichs · lore

Re: Switching between branches

Dear diary, on Thu, Apr 21, 2005 at 04:12:49PM CEST, I got a letter where Matthias Urlichs <smurf@smurf.noris.de> told me that...

Show 17 quoted lines
> Hi, Petr Baudis wrote:
> 
> > Hello,
> > 
> >> Perhaps it's a naive question, but how do I switch between branches?  I
> >> mean an equivalent of "svn switch" or "cvs update -r branch" that would
> >> reuse the existing working directory.
> > 
> > you can't. There was 'git update' (and intermediate never-committed 'git
> > switch'), but I decided not to support it for now, since I don't have any
> > compelling usage case for it.
> 
> I do -- I have a project which builds several slightly-customized versions,
> and I'd like to keep the generated objects around if possible.
> 
> So I just build one version, then "git cancel FOO" to the next version,
> and let the make rules take care of rebuilding what needs to be rebuilt.
I suppose we could do with git switch then.
-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

← back to recent threads