threads / bug / 54386

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

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

## tl;dr

4 messages between Oct 10, 2020 and Oct 12, 2020.

replies: 3people: 3as markdown or json

Philippe Blain· Oct 10, 2020, 16:43 UTC · lore
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· Oct 11, 2020, 06:58 UTC · re: Philippe Blain · lore

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

Am 10.10.20 um 18:43 schrieb Philippe Blain:
Show 18 quoted lines
> 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· Oct 11, 2020, 16:19 UTC · re: Johannes Sixt · lore

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

Hi Johannes, 
Show 25 quoted lines
> 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· Oct 12, 2020, 11:10 UTC · re: Philippe Blain · lore

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

Hi Philippe,
On Sat, 10 Oct 2020, Philippe Blain wrote:
Show 9 quoted lines
> $ 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

← back to recent threads