threads / discuss / 45701

Git allow to unconditionaly remove files on other developer host

Subject: Git allow to unconditionaly remove files on other developer host

## tl;dr

4 messages between Apr 15, 2017 and Jan 6, 2018.

replies: 3people: 3as markdown or json

KES· Apr 15, 2017, 11:36 UTC · lore
Hi.
That curious, but git allow to unconditionally delete files on other developer host when he do `git pull`
How to reproduce:
1. File should be ignored:
echo "somefile" >> .gitignore
2. Add this ignored file into repository
git add -f somefile
3. Push changes to origin
git push
4. When other developer has also 'somefile' on his host and when he does
git pull
Content of hist local `somefile` file will be replaced by content pushed by first developer
EXPECTED: git should warn about that content will be replaced and do not pull/checkout until we force pull/checkout
Johannes Sixt· Apr 15, 2017, 12:27 UTC · re: KES · lore

Re: Git allow to unconditionaly remove files on other developer host

Am 15.04.2017 um 13:36 schrieb KES:
Show 17 quoted lines
> That curious, but git allow to unconditionally delete files on other developer host when he do `git pull`
>
> How to reproduce:
>
> 1. File should be ignored:
> echo "somefile" >> .gitignore
>
> 2. Add this ignored file into repository
> git add -f somefile
>
> 3. Push changes to origin
> git push
>
> 4. When other developer has also 'somefile' on his host and when he does
> git pull
>
> Content of hist local `somefile` file will be replaced by content pushed by first developer

This happens *only* if the other developers also have somefile mentioned in their .gitignore.

>
> EXPECTED: git should warn about that content will be replaced and do not pull/checkout until we force pull/checkout

If somefile is *not* mentioned in their .gitignore, the file is not removed and there is a warning.

Know that Git regards everything mentioned in .gitignore as dispensible; IOW, by mentioning a file in .gitignore you actually give permission to remove the file if necessary. Git does not have a feature to say "ignore this file, but it is precious".

-- Hannes
Konstantin Khomoutov· Apr 15, 2017, 12:53 UTC · re: Johannes Sixt · lore

Re: Git allow to unconditionaly remove files on other developer host

On Sat, 15 Apr 2017 14:27:00 +0200 Johannes Sixt <j6t@kdbg.org> wrote:

> > That curious, but git allow to unconditionally delete files on
> > other developer host when he do `git pull`
[...]
> Know that Git regards everything mentioned in .gitignore as
> dispensible; IOW, by mentioning a file in .gitignore you actually
> give permission to remove the file if necessary. Git does not have a
> feature to say "ignore this file, but it is precious".
KES, you might also be interested in this recent thread [1].
1. http://public-inbox.org/git/CAPUVn2u0Uos2mT5+4ejj8m0okNK6XwerL6ce2miHfhtuEs-ZnQ@mail.gmail.com/
KES· Jan 6, 2018, 12:06 UTC · re: Johannes Sixt · lore

Re: Git allow to unconditionaly remove files on other developer host

> This happens *only* if the other developers also have somefile mentioned
> in their .gitignore.
It will be mentioned, because of I can add/push, wait developers pull,  add/push
I can do this because I was angry or was fired. So this is my last "surprise" for others ))
>>  EXPECTED: git should warn about that content will be replaced and do not pull/checkout until we force pull/checkout
>
> If somefile is *not* mentioned in their .gitignore, the file is not
> removed and there is a warning.
As you can see the file is not just ignored in my case it is important because added to the repo

we can think of some sort of default configuration stored in repo. But added to ignore file because developers do not want to track local changes (every developer has own options when configure local instance of application)

it *this very important* to not lose these options while switching between branches or pull from remote.
And I do not expect and do not want to get such "surprises" from anyone

← back to recent threads