Git : ignorer les modifications d'un fichier

il y a 1 an

Prenons le cas d'un fichier de configuration suivi (le terme anglais "tracked" est plus courrant) dans un dépôt git. Imaginons que celui-ci soit différent pour chaque développeur du porjet car il contient par exemple l'utilisateur / mot de passe pour accéder à une base de données. C'est le cas typique dans lequel tout le monde retrouvera ce fichier dans la liste des fichiers modifiés continuellement ce qui est très agaçant sad.

Pour résoudre ce problème, git propose d'ignorer les modifications effectuées sur un fichier déjà suivi via la commande suivante :

$ git update-index --assume-unchanged 

Faisons le test :

$ git init
Initialized empty Git repository in /Users/romain/Dev/test_git/.git/
$ touch foo
$ git add foo
$ git commit -m "Foo added"
[master (root-commit) 13a00de] Foo added
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 foo
$ echo "bar" > foo
$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

	modified:   foo

no changes added to commit (use "git add" and/or "git commit -a")
$ git update-index --assume-unchanged foo
$ git status
On branch master
nothing to commit, working directory clean

Comme prévu, le fichier n'est plus présent dans la liste des fichiers ayant changé smiley.

Pour annuler l'effet de cette commande, il suffit d'utiliser l'inverse :

$ git update-index --no-assume-unchanged