git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: .gitignore does not ignore Makefile

From
Jakub Narębski <jnareb@gmail.com>
Date
Sep 23, 2016, 22:29 UTC
Message-ID
<d98bd20f-870a-71a0-fda2-aabe71a5f981@gmail.com>
In-Reply-To
<xmqqy42j4wp9.fsf@gitster.mtv.corp.google.com>
W dniu 22.09.2016 o 20:26, Junio C Hamano napisał:
Show 15 quoted lines
> Kevin Daudt <me@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
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
Previous: Junio C Hamano
Message 6 of 6 in “.gitignore does not ignore Makefile”
  1. Timur TabiSep 22, 2016
  2. Kevin DaudtSep 22, 2016
  3. Junio C HamanoSep 22, 2016
  4. Timur TabiSep 22, 2016
  5. Junio C HamanoSep 22, 2016
  6. Jakub NarębskiSep 23, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.