Existe-t-il une commande ignore pour git comme pour svn?

125

Je suis un nouvel utilisateur gitet je démarre un nouveau projet. J'ai un tas de fichiers de points que je voudrais ignorer. Y a-t-il une commande ignorer pour gitcomme il y en a pour svn?

Chris J
la source
1
Bonne alternative à gitignore: git update-index --assume-unchanged <file> , grâce à stackoverflow.com/a/16442091/2162226
Gene Bo

Réponses:

136

Il n'y a pas de git ignorecommande spéciale .

Modifiez un .gitignorefichier situé à l'emplacement approprié dans la copie de travail. Vous devez ensuite ajouter ceci .gitignoreet le valider. Tous ceux qui clonent ce dépôt verront ces fichiers ignorés.

Notez que seuls les noms de fichiers commençant par /seront relatifs au répertoire .gitignoredans lequel réside. Tout le reste correspondra aux fichiers dans n'importe quel sous-répertoire.

Vous pouvez également modifier .git/info/excludepour ignorer des fichiers spécifiques uniquement dans cette copie de travail. Le .git/info/excludefichier ne sera pas validé et ne s'appliquera donc que localement dans cette copie de travail unique.

Vous pouvez également configurer un fichier global avec des modèles à ignorer git config --global core.excludesfile. Cela s'appliquera localement à toutes les copies de travail git sur le même compte utilisateur.

Exécutez git help gitignoreet lisez le texte pour plus de détails.

ndim
la source
75
Ne pas avoir une simple commande Ignorer semble être un tel oubli de la part de l'équipe git.
jcollum
4
@jcollum À première vue, c'est le cas, mais la simplicité d'aliaser une commande pour en ajouter de nouvelles ET la complexité d'en créer une et de travailler sur tous les cas limites / pièges / problèmes potentiels liés à l'édition d'un fichier texte a également du sens de le laisser au utilisateur. Je me sens en conflit parce que je suis à la fois d'accord et en désaccord avec vous.
abelito
100

Une commande git ignore très utile est fournie avec l'impressionnant tj / git-extras .

Voici quelques exemples d'utilisation:

Liste tous les modèles actuellement ignorés

git ignore

Ajouter un motif

git ignore "*.log"

Ajoutez l'un des modèles de gitignore.io

git ignore-io -a rails

git-extras fournit beaucoup plus de commandes utiles. Vaut vraiment la peine d'essayer.

Nicolai Fröhlich
la source
1
Donc, si j'utilise git ignore "index.html", il ignorera ce fichier?
JohnAndrews
La commande -t est-elle toujours applicable? Quand je l'exécute, il ajoute simplement le -t et le modèle que j'essaie d'ajouter dans le fichier git ignore
Bynho
50

Sous Linux / Unix, vous pouvez ajouter des fichiers au fichier .gitignore avec la echocommande. Par exemple, si vous souhaitez ignorer tous les .svndossiers, exécutez ceci à partir de la racine du projet:

echo .svn/ >> .gitignore
pfrenssen
la source
1
J'ai découvert ce tweet en utilisant cette syntaxe twitter.com/noodl_io/status/669904872704253953
JohnAndrews
3
Dans Git Bash sous Windows, je devais ajouter un /'\' précédent et final (pour créer une nouvelle ligne), comme echo /nbproject/project.properties\ >> .gitignoreet echo /nbproject/project.xml\ >> .gitignore.
Ryan
15

Vous avez deux manières d'ignorer les fichiers:

  • .gitignoredans n'importe quel dossier ignorera les fichiers tels que spécifiés dans le fichier pour ce dossier. L'utilisation de jokers est possible.
  • .git/info/excludecontient le modèle d'ignorer global, similaire au global-ignoresfichier de configuration in subversions.
bluebrother
la source
6
Notez que les motifs dans le .gitignorefichier qui ne contiennent pas '/' sont mis en correspondance récursivement (c'est-à-dire également dans tous les sous-répertoires du répertoire dans lequel se trouve le .gitignorefichier), contrairement au cas des svn:ignorepropriétés de répertoire dans Subversion.
Jakub Narębski
6

J'espère qu'il n'est pas trop tard.

Si vous êtes sous Windows, vous pouvez simplement faire ce qui suit pour créer un fichier .gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Pour éditer .gitignore, vous pouvez exécuter

notepad .gitignore
Nesar
la source
2
Ne l'utilisez pas si vous avez déjà un fichier .gitignore, il l'écrasera! Pour ajouter le fichier à ignorer, utilisez ceci: echo ignore.ext >> .gitignore
TomEberhard
Vous avez raison, il est conseillé de ne l'utiliser que si le fichier .gitignore n'existe pas. Mieux vaut utiliser "notepad .gitignore", si vous avez un fichier .gitignore, il l'ouvrira, et si vous ne le faites pas, il en créera un, et vous pourrez ensuite ajouter tous les fichiers du bloc-notes. 1 fichier / dossier par ligne
Nesar
3

Créez un fichier nommé .gitignore à la racine de votre référentiel. Dans ce fichier, vous mettez le chemin relatif de chaque fichier que vous souhaitez ignorer sur une seule ligne. Vous pouvez utiliser le *caractère générique.

Bruno Reis
la source
2

En utilisant les réponses déjà fournies, vous pouvez lancer votre propre git ignorecommande en utilisant un alias . Ajoutez ceci à votre fichier ~ / .gitconfig:

ignore = !sh -c 'echo $1 >> .gitignore' -

Ou exécutez cette commande à partir du shell (* nix) de votre choix:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Vous pouvez également créer une git excludecommande en remplaçant ignorepar excludeet .gitignorepar.git/info/exclude ci-dessus.

(Si vous ne comprenez pas déjà la différence entre ces deux fichiers après avoir lu les réponses ici, lisez cette question .)

démonexmachina
la source
1
La réponse ici développe correctement 1 $: stackoverflow.com/a/21884533/1465227
Archangel33
2

pour les noms non présents dans la copie de travail ou le repo:

echo /globpattern >> .gitignore

ou pour un fichier existant (ligne de commande de type sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit
nrbray
la source
1

Il est utile de définir un fichier .gitignore complet pour votre projet. La récompense est une utilisation sûre de la pratique --allou le -adrapeau aux commandes comme addetcommit .

Pensez également à définir un fichier global ~ / .gitignore pour les modèles couramment ignorés tels que *~ , qui couvre les fichiers temporaires créés par Emacs.

seh
la source
1

Vous devez installer git-extras pour cela. Vous pouvez l'installer dans Ubuntu en utilisant apt-get,

$ sudo apt-get install git-extras

Ensuite, vous pouvez utiliser la commande git ignore.

$ git ignore file_name
Vidura Mudalige
la source
3
Sur Mac, si Homebrew est installé, vous pouvez exécuter brew install git-extras.
Alex Glover
0

Vous pouvez également utiliser gitignore.io de Joe Blau

Soit via l'interface web https://www.gitignore.io/

Ou en installant l'outil CLI, c'est très simple et rapide, tapez simplement ce qui suit sur votre terminal:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

Et puis vous pouvez simplement taper gisuivi de tous les éléments de plate-forme / environnement pour lesquels vous avez besoin des critères gitignore.

Exemple!
Disons que vous travaillez sur un projet de nœud qui inclut grunt et que vous utilisez webstorm sur Linux, alors vous voudrez peut-être taper:
gi linux,webstorm,node,grunt > .gitignore(pour créer un tout nouveau fichier)
ou
gi linux,webstorm,node,grunt >> .gitignore(pour ajouter / ajouter les nouvelles règles à un fichier existant )

bam, tu es prêt à partir

JorgeArtware
la source