2010-07-28 5 views
12

J'ai un fichier suivi de la base de données (déjà ajouté) dans git. Je veux que ce fichier contienne toujours les mêmes données dans mon dépôt git. Même lorsque je le modifie dans la copie de travail (sandbox local) à des fins de test.Avec git, exclure temporairement un fichier suivi modifié de commit dans la ligne de commande

Avec git, comment exclure ce fichier modifié sur ma copie de travail d'un commit?

+1

Copie possible: http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-the-content-changes – Daenyth

Répondre

19

La façon d'ignorer certains fichiers qui sont déjà engagés est

git update-index --assume-unchanged file 

Cependant, il s'agit d'un paramètre local et il ne se propage pas lors du clonage.

Son effet est annulé avec git update-index --no-assume-unchanged gui.

+0

Ceci est un paramètre local, c'est exactement ce que je cherche – djondal

-3
  1. ajouter ce fichier à votre repo
  2. commettras
  3. ajouter à .gitignore fichier
  4. commettras fichier .gitignore
+0

Cela me fait mal à la tête, mais c'est probablement plus élégant que ma suggestion – jdizzle

+1

Cette solution ne fonctionne pas car le fichier est déjà suivi, n'est-ce pas? – djondal

+1

-1. Cela ne fonctionne tout simplement pas. Le fichier est toujours affiché dans 'git status' comme modifié. –

2

Si vous ne le faites pas git commit -a, git commit commettra uniquement les fichiers vous avez explicitement ajouté à l'index en utilisant git add.

+2

Cependant, il est fastidieux de mémoriser, quels fichiers vous devriez ajouter, et lesquels vous ne devriez pas. –

-1

simplement ne pas ajouter avec git add, mais ajoutez un autre fichier que vous souhaitez engager

puis utilisez git commit au lieu de git commit -a

+0

OP indique spécifiquement qu'il est déjà suivi. – mhvelplund

-2

La façon la plus intelligente de faire cela est de ne pas suivre la base de données directement. Suivre un exemple de base de données, puis chaque développeur peut le copier et le modifier, et il peut être sous gitignore.

+0

-1. Inutile. Quoi qu'il en soit, vous ne pouvez parfois pas le faire car le framework externe ** modifie ** le fichier lors de la construction, et ne peut pas le générer en même temps. –

+2

Si mon fichier est suivi, c'est parce qu'il devrait être suivi ... C'est juste que je ne veux pas propager les changements que je fais au niveau des tests. – djondal

4

En plus d'utiliser git add, je suggère d'utiliser une coque avec plus de capacités, à savoir zsh. Ici vous pouvez insérer la globalisation étendue comme *~*.o(.) ce qui signifie tous les fichiers sauf ceux se terminant par o. Cela facilite l'ajout de tous les fichiers sauf un. Zsh vous permet également de définir un alias global: alias -g AF="*~*.o(.)". Donc, vous pouvez taper git add AF et il sera élargi de la bonne façon.