831 votes

Ajouter tous les fichiers à un commit sauf un seul fichier ?

J’ai un tas de fichiers dans un ensemble de modifications, mais je veux ignorer spécifiquement un unique fichier modifié. Ressemble à ceci après git status :

Est-il possible que je peux faire git ajouter mais simplement ignorer le fichier un texte je ne veux pas toucher ? Quelque chose comme :

Merci

1115voto

Ben Jackson Points 28358
git add -u
git reset -- main/dontcheckmein.txt

193voto

Aquarius Power Points 242

1) pour commencer À ignorer les modifications apportées à un seul déjà versionnés fichier

git update-index --assume-unchanged "main/dontcheckmein.txt"

et pour annuler qu' git update-index --no-assume-unchanged "main/dontcheckmein.txt"

vérifiez ici

2) D'ignorer complètement spécifique fichier unique qui l'empêche d'être créé au référentiel

Regardez d'abord cette Git mondiale ignorer ne fonctionne pas

et à l' .gitignore ajouter le chemin relatif vers le fichier sans ./

donc, si votre fichier est à l' MyProject/MyFolder/myfile.txt (où .git est également à l' MyProject), en .gitignore vous mettez juste ce MyFolder/myfile.txt

vous pouvez confirmer ce que la règle est liée à l'ignorer avec git check-ignore "MyFolder/myfile.txt"

A propos de global ignorer

Ce lien parle d' ~/.gitignore_global; mais le fichier est lié à votre projet; donc, si vous mettez l'exclure modèle MyFolder/myfile.txt à ~/.gitignore_global, cela fonctionne, mais ne sera pas faire beaucoup de sens...

En revanche, si vous configurez votre projet avec git config core.excludesfile .gitignore.gitignore est MyProject; que le programme d'installation remplace ~/.gitignore_global qui peuvent avoir très utile règles...

Donc, pour l'instant, je pense que le mieux est de faire un script pour mélanger votre .gitignore avec ~/.gitignore_global à .gitignore.

Un dernier avertissement
Si le fichier que vous voulez ignorer, c'est déjà sur le référentiel, cette méthode ne fonctionnera que si vous faites cela: git rm "MyFolder/myfile.txt", mais la sauvegarde, car il sera supprimé localement aussi! vous pouvez le copier revenir plus tard...

112voto

Rituraj ratan Points 5553

Pour un fichier

Pour un dossier

22voto

Anthony Naddeo Points 327

Tandis que Ben Jackson est correct, j'ai pensé que je voudrais ajouter que j'ai été en utilisant cette solution. Ci-dessous est un script très simple que j'utilise (que j'appelle gitadd) pour ajouter toutes les modifications, sauf quelques uns que j'ai toujours répertoriés dans un fichier appelé" .gittrackignore (très similaire à la façon dont .gitignore œuvres).

#!/bin/bash
set -e

git add -A
git reset `cat .gittrackignore`

Et c'est ce que mon actuel .gittrackignore ressemble.

project.properties

Je suis en train de travailler sur un projet Android que je compile en ligne de commande lors du déploiement. Ce projet dépend de SherlockActionBar, donc il doit être référencé dans le projet.propriétés, mais qui touche à la compilation, donc maintenant je viens de type gitadd et ajoutez tous les changements de git sans avoir à onu-ajouter un projet.les propriétés de tous les temps.

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