W dniu 22.09.2016 o 20:26, Junio C Hamano napisał:
> Kevin Daudt <m...@ikke.info> writes:
>> Often people advise tricks like `git update-index --assume-unchanges
>> <file>`, but this does not work as expected. It's merely a promise to
>> git that this file does not change (and hence, git will not check if
>> this file has changed when doing git status), but command that try to
>> change this file will abort saying that the file has changed.
> It actually is even worse. As the user promised Git that the <file>
> will not be modified and will be kept the same as the version in the
> index, Git reserves the right to _overwrite_ it with the version in
> the index anytime when it is convenient to do so, removing whatever
> local change the user had despite the promise to Git. The "abort
> saying that the file has changed" is merely various codepaths in the
> current implementation trying to be extra nice.
There is a trick that works almost as 'ignore changes' for tracked
files, namely `git update-index --skip-worktree <file>`. From the
Skip-worktree bit can be defined in one (long) sentence: When
reading an entry, if it is marked as skip-worktree, then Git
pretends its working directory version is up to date and read
the index version instead.
[...] Writing is not affected by this bit, content safety is still
first priority. [...]
It works quite well; the only problem is that `git stash` would
not stash away your changes, and you would need to unmark such
file before saving a stash.
With --assume-unchanged used for ignoring changes to tracked files,
you can quite easily lose your work because you are lying to Git.
Note also that in Git classic "ignored" implies unimportant.