Jeff King <peff@xxxxxxxx> writes: > On Tue, Nov 01, 2016 at 10:28:57AM +0000, Halde, Faiz wrote: > >> I frequently use the following command to ignore changes done in a file >> >> git update-index --assume-unchanged somefile >> >> Now when I do a pull from my remote branch and say the file 'somefile' >> was changed locally and in remote, git will abort the merge saying I >> need to commit my changes of 'somefile'. >> >> But isn't the whole point of the above command to ignore the changes >> within the file? > > No. The purpose of --assume-unchanged is to promise git that you will > not change the file, so that it may skip checking the file contents in > some cases as an optimization. That's correct. The next anticipated question is "then how would I tell Git to ignore changes done to a file locally by me?", whose short answer is "You don't", of course. People may however wonder, if Git can make things more automatic if the user is willing to tell her intention of what should happen to "somefile" in the example above when an operation requested cannot proceed while ignoring the local changes. For example, "ignore my change and overwrite as needed" could be such an instruction (and it is obvious what should happen in that case when "git pull" was done--just clobber it with the version from the other side). As I do not think of other sensible alternative behaviour, and I do not think Git should make it easy to lose local changes when the user is doing things like "pull" [*1*], it leads to the longer answer to the question, which is again "You don't" ;-). [Footnote] *1* Things like "git checkout [<tree>] [--] <path>", "git rm -f" and "git reset --hard" are ways to explicit request nuking the local changes, and presence of these commands do not contradict with "do not make it easy to lose local changes", of course.