Question

I have a file (config.php), that is already commited to Git repository, but I want to ignore locally, i.e. I want that file to remain in repository, but force Git to ignore any changes to it.

I put the file into .gitignore, but it is still marked as changed and Git still is attempting to commit changes to it, every time I commit something. Any idea, what am I missing or doing wrong?

Was it helpful?

Solution

If the file is still displayed in the status, even though it is in the .gitignore, make sure it isn't already tracked.

git rm --cached config.php

If you just want to ignore it locally, you could also make it ignored by the git status:

git update-index --assume-unchanged config.php

As commented, do note that using --assume-unchanged might cause unwanted data loss as git stash resets the "ignored" files to the state in upstream, undoing local changes, without a warning or saving.

OTHER TIPS

Ignore checked in file:

git update-index --assume-unchanged file

To revert

git update-index --no-assume-unchanged file

Revert All

git update-index --really-refresh 

If the file is already in the repository, and hence the Index/Staging area, then an update to .gitignore won't change that situation - It would keep beinging committed.

To remove the file from the Index/Staging area use git rm <file>.

Once a file is listed in the .gitignore you cannot change it.

So you could remove the file from the list in one commit, commit changes the next, then re-add the file to the ignore list in a 3rd commit afterwards.

What I usually do is split the file into two, one that is allowed and I can change, which includes the second file if it exists, then devs can make config changes in the ignored file optionally.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top