1912 votes

Arrêter le suivi et ignorer les modifications apportées à un fichier dans Git

J'ai cloné un projet qui comprend quelques - .csproj fichiers. Je n'ai pas besoin/comme mon local csproj fichiers qui sont suivis par Git (ou d'être apporté lors de la création d'un patch), mais clairement ils sont nécessaires dans le projet.

J'ai ajouté *.csproj de mon LOCAL .gitignore, mais les fichiers sont déjà dans le repo.

Quand je tape la commande git status, il montre mes changements d' csproj qui ne m'intéresse pas de suivre ou de la soumission pour les patchs.

Comment puis-je supprimer le "suivi de" ces fichiers à partir de mon repo (mais de les garder dans la source afin que je puisse les utiliser) donc je ne vois pas les changements, quand je fais un état (ou de créer un patch)?

Est-il correct/canoniques façon de gérer cette situation?

2318voto

anthony Points 15067

Juste appelant git rm --cached sur chacun des fichiers que vous souhaitez supprimer de contrôle de révision doit être fine. Tant que votre local ignorer les modèles sont corrects, vous ne verrez pas ces fichiers inclus dans la sortie de git status.

255voto

araqnid Points 33350

Si vous n' git update-index --assume-unchanged file.csproj, git ne pas vérifier le fichier.csproj pour les changements automatiquement: les stopper à venir dans git status chaque fois que vous modifiez. De sorte que vous pouvez marquer tous vos .csproj des fichiers de cette façon - bien que vous aurez à marquer manuellement toutes celles qui l'amont repo vous envoie. (Si vous les avez dans votre .gitignore ou .git/info/exclude, puis celles que vous créez seront ignorés)

Je ne suis pas entièrement sûr de ce que .csproj fichiers sont... si elles sont quelque chose le long des lignes de l'IDE configurations (similaire à Eclipse .eclipse et .classpath fichiers) alors je suggère qu'ils devraient tout simplement jamais être sous contrôle de code source. D'autre part, si elles font partie du système de construction (comme des Makefiles) alors qu'elles doivent clairement--- et une façon de prendre en option modifications locales (par exemple à partir d'un local.csproj à la config.mk) serait utile: diviser l'accumulation dans les pièces et les priorités locales.

158voto

rjha94 Points 1879

C'est un processus en deux étapes:

  1. Retirez le suivi de fichier/dossier - mais de les garder sur le disque à l'aide de git

    rm --cached 
    
    • Maintenant, ils n'apparaissent pas comme "modifié" mais est-il toujours

      untracked files in  git status -u  
      
  2. Ajoutez-les à la .gitignore

24voto

Peter Points 1414

Pour gagner du temps les règles que vous ajoutez à votre .gitignore peut être utilisé pour supprimer plusieurs fichiers/dossiers à savoir

git rm --cached app/**/*.xml

ou

git rm --cached -r app/widgets/yourfolder/

e.t.c.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X