# [BUG?] After 'git checkout', files deleted upstream are left in the working directory as untracked

4 messages from 2020-10-10 to 2020-10-12. Participants: Philippe Blain, Johannes Sixt, Johannes Schindelin.
Thread: https://gitlist.dev/t/54386

## Philippe Blain, 2020-10-10 16:43

Subject: [BUG?] After 'git checkout', files deleted upstream are left in the working directory as untracked
Message-ID: <3D3C5F5D-830E-4EC7-A527-DC595D983BB2@gmail.com>
URL: https://gitlist.dev/e/3D3C5F5D-830E-4EC7-A527-DC595D983BB2%40gmail.com

```
Hello all,

I've noticed a weird behaviour of 'git checkout' and I don't know if it's a bug.

I went back to an old clone which had an old feature branch ('stale-branch') 
checkout out, and its working directory and index matching HEAD 
('git status' is clean).
Then I did `git checkout other-branch`, where 'other branch' is a more 
recent feature branch, based on a more recent commit on 'master'.
After the checkout, `git status` reports untracked files. These are files that were 
deleted on 'master' between the commit on which 'stale-branch' was based (d9f6f3b619)
and the commit on which 'other-branch' is based (d4a392452e).

The thing is, I can't reproduce it on a fresh clone. If I could, this would be a reproducer:

ˋˋˋ
$ git clone git@github.com:phil-blain/git.git && cd git
$ git checkout stale-branch
$ git checkout other-branch
$ git status # the following is what is shown in my old clone
On branch other-branch
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	git-legacy-stash
	git-remote-testsvn
	t/helper/test-line-buffer
	t/helper/test-svn-fe

nothing added to commit but untracked files present (use "git add" to track)
ˋˋˋ

I did not modify or delete any of these 4 files myself, neither in the commits 
on 'stale-branch' or in the commits on 'other-branch'. They were deleted by
other feature branches that were merged to 'master' between d9f6f3b619 and
d4a392452e.

This is not the first time that I've seen this happen, and I'd like to understand
if this is a bug, and why I can't reproduce it on a fresh clone (I'm guessing maybe
the index is at play here, but I'm not sure how to diagnose it)...

Thanks and cheers,

Philippe.


```

## Johannes Sixt, 2020-10-11 06:58

Subject: Re: [BUG?] After 'git checkout', files deleted upstream are left in the working directory as untracked
Message-ID: <8f88733f-4f20-6215-00a8-de3024b8c4cb@kdbg.org>
URL: https://gitlist.dev/e/8f88733f-4f20-6215-00a8-de3024b8c4cb%40kdbg.org
In-Reply-To: <3D3C5F5D-830E-4EC7-A527-DC595D983BB2@gmail.com>

```
Am 10.10.20 um 18:43 schrieb Philippe Blain:
> The thing is, I can't reproduce it on a fresh clone. If I could, this would be a reproducer:
> 
> ˋˋˋ
> $ git clone git@github.com:phil-blain/git.git && cd git
> $ git checkout stale-branch
> $ git checkout other-branch
> $ git status # the following is what is shown in my old clone
> On branch other-branch
> Untracked files:
>   (use "git add <file>..." to include in what will be committed)
> 
> 	git-legacy-stash
> 	git-remote-testsvn
> 	t/helper/test-line-buffer
> 	t/helper/test-svn-fe
> 
> nothing added to commit but untracked files present (use "git add" to track)
> ˋˋˋ

This is normal. These 4 files are build products and were never
committed files. They had been mentioned in .gitignore in the past, but
are not anymore.

Apparently, your old repository had these build products still lying
around. If you insert `make` in your instructions above after `git
checkout stale-branch`, you should be able to observe the same
un-cleanlyness in a new clone.

-- Hannes

```

## Philippe Blain, 2020-10-11 16:19

Subject: Re: [BUG?] After 'git checkout', files deleted upstream are left in the working directory as untracked
Message-ID: <7F30E2AB-D742-4581-9AF8-6138A45A3F22@gmail.com>
URL: https://gitlist.dev/e/7F30E2AB-D742-4581-9AF8-6138A45A3F22%40gmail.com
In-Reply-To: <8f88733f-4f20-6215-00a8-de3024b8c4cb@kdbg.org>

```
Hi Johannes, 

> Le 11 oct. 2020 à 02:58, Johannes Sixt <j6t@kdbg.org> a écrit :
> 
> Am 10.10.20 um 18:43 schrieb Philippe Blain:
>> The thing is, I can't reproduce it on a fresh clone. If I could, this would be a reproducer:
>> 
>> ˋˋˋ
>> $ git clone git@github.com:phil-blain/git.git && cd git
>> $ git checkout stale-branch
>> $ git checkout other-branch
>> $ git status # the following is what is shown in my old clone
>> On branch other-branch
>> Untracked files:
>>  (use "git add <file>..." to include in what will be committed)
>> 
>> 	git-legacy-stash
>> 	git-remote-testsvn
>> 	t/helper/test-line-buffer
>> 	t/helper/test-svn-fe
>> 
>> nothing added to commit but untracked files present (use "git add" to track)
>> ˋˋˋ
> 
> This is normal. These 4 files are build products and were never
> committed files. They had been mentioned in .gitignore in the past, but
> are not anymore.

Oops, I should've checked that. Thanks for answering!

Philippe.


```

## Johannes Schindelin, 2020-10-12 11:10

Subject: Re: [BUG?] After 'git checkout', files deleted upstream are left in the working directory as untracked
Message-ID: <nycvar.QRO.7.76.6.2010121306470.50@tvgsbejvaqbjf.bet>
URL: https://gitlist.dev/e/nycvar.QRO.7.76.6.2010121306470.50%40tvgsbejvaqbjf.bet
In-Reply-To: <3D3C5F5D-830E-4EC7-A527-DC595D983BB2@gmail.com>

```
Hi Philippe,

On Sat, 10 Oct 2020, Philippe Blain wrote:

> $ git status # the following is what is shown in my old clone
> On branch other-branch
> Untracked files:
>   (use "git add <file>..." to include in what will be committed)
>
> 	git-legacy-stash
> 	git-remote-testsvn
> 	t/helper/test-line-buffer
> 	t/helper/test-svn-fe

These files were generated previously, but are no longer generated
(`legacy-stash` was retired in favor of the built-in `stash`,
`remote-testsvn` was dropped because it languished for long enough without
anybody picking it back up, and the test helpers were necessary to test
`test-svn`).

Since they are no longer generated, those build products are no longer
desired.

And you don't see them in a fresh clone because they were only compiled in
previous revisions.

So this works as expected.

What you will want to do is to run `git clean -dn` to see what `clean`
would remove, and once satisfied that it's all good, actually remove the
files using `git clean -df`.

Ciao,
Dscho

```
