From: J.V. Date: Fri, 01 Mar 2013 20:52:33 GMT Subject: Re: problem switching branches Message-ID: <51311511.9080601@gmail.com> In-Reply-To: <20130227051740.GB10976@sigill.intra.peff.net> 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