Subject: Re: problem switching branches

From: "J.V." <[email-masked]>
Date: Fri, 01 Mar 2013 13:52:33 -0700

On 2/26/2013 10:17 PM, Jeff King wrote:
> On Tue, Feb 26, 2013 at 04:08:55PM -0700, J.V. wrote:
>
>> I was on my master branch, I then checked out a branch (
>> origin/somebranch ), made no updates
>> but did a few git pulls on the branch over about a week; then made a
>> small change to only a single file & committed & pushed.
>>
>> Now am trying to go back to my master branch and get:
>>
>> error: The following untracked working tree files would be
>> overwritten by checkout:
>>          lib/derbyclient.jar
>> Please move or remove them before you can switch branches.
>> Aborting
>>
>>
>> I did not put that jar file there (I edited a single config file),
>> how do I now get back to my master branch?
> Not knowing anything about your project, it's impossible to say for
> sure, but this often happens with something like:
>
>    1. lib/derbyclient.jar used to be generated by your project's build
>       procedure
This jar was put on the master branch last year; It does not exist in 
the branch that I am now on where I get the error message (I am on a 
branch that was created for a previous release).

>
>    2. You did a build of your project, generating the file in your
>       working tree.
This jar is downloaded from the web and put there; we did not generate.

>
>    3. Meanwhile, somebody upstream added and commited lib/derbyclient.jar
>       directly in the repository. This might have been intentional (it
>       used to be a generated file, but now is included as source), or it
>       may have been an accident (mistaken use of `git add`).
It was committed intentionally, last year, but does not exist in the 
branch that I am now on, but it is there.

>
>    4. You try to switch to the master branch with the new commits from
>       (3). Git sees that the copy of the file in your working tree would
>       be overwritten and lost (since it was never committed by you), so
>       aborts.
>
> If you are sure that the file in the working tree does not contain
> anything interesting, you can use "git checkout -f master" to force the
> overwrite.

I will try this.

>
>> I do not want to muck up the branch that I am now on by deleting anything.
>> Any ideas how this happened?
> You won't hurt the branch you are on; you will just lose the contents in
> the untracked working tree file. That's probably fine if it is a
> generated file, as in the scenario I described above. We know that the
> file is not included in the branch you are on (otherwise, it would not
> be listed as untracked). And even if it were, you would only impact the
> branch by committing the changes, not by changing the working tree.
>
>> Obviously someone put derbyclient.jar there, not sure, but it is
>> supposed to be there so do not want to remove as advised.
> It won't be removed; it will be overwritten with the version of the file
> that is on "master". Which is probably what you want; you may want to
> look at `git log master -- lib/derbyclient.jar` to see why it was added.
>
> -Peff