W dniu 22.09.2016 o 20:26, Junio C Hamano napisał: > Kevin Daudt <me@xxxxxxxxx> 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 documentation: Skip-worktree bit ~~~~~~~~~~~~~~~~~ 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. -- Jakub Narębski