203 votes

gitignore sans les fichiers binaires

Comment pouvez fichiers binaires être ignoré en git à l'aide de l' .gitignore le fichier?

Exemple:

$ g++ hello.c -o hello

Le "bonjour" le fichier est un fichier binaire. Peut - git ignorer ce fichier ?

191voto

VenomVendor Points 2976
# Ignore all
*

# Unignore all with extensions
!*.*

# Unignore all dirs
!*/

### Above combination will ignore all files without extension ###

# Ignore files with extension `.class` & `.sm`
*.class
*.sm

# Ignore `bin` dir
bin/
# or
*/bin/*

# Unignore all `.jar` in `bin` dir
!*/bin/*.jar

# Ignore all `library.jar` in `bin` dir
*/bin/library.jar

# Ignore a file with extension
relative/path/to/dir/filename.extension

# Ignore a file without extension
relative/path/to/dir/anotherfile

49voto

manojlds Points 96599

Ajouter quelque chose comme

*.o

dans l' .gitignore fichier et de le placer à la racine de votre repo ( ou vous pouvez placer dans le sous-répertoire que vous voulez - il s'appliquera à partir de ce niveau ) et le vérifier.

Edit:

Pour les fichiers binaires sans extension, il est préférable de les placer en bin/ ou dans un autre dossier. Après tout il n'y a pas d'ignorer basé sur le type de contenu.

Vous pouvez essayer

*
!*.*

mais ce n'est pas à toute épreuve.

36voto

icks Points 101

Pour ajouter tous les fichiers exécutables à votre .gitignore (qui tu veux sans doute dire par "fichier binaire" à en juger par votre question), vous pouvez utiliser

find . -executable -type f >>.gitignore

Si vous n'avez pas de soins sur l'ordre des lignes dans votre .gitignore, vous pouvez également mettre à jour votre .gitignore avec la commande suivante pour supprimer les doublons et garde alphabétique tri intacte.

T=$(mktemp); (cat .gitignore; find . -executable -type f | sed -e 's%^\./%%') | sort | uniq >$T; mv $T .gitignore

Notez que vous ne pouvez pas sortie de tuyau directement à l' .gitignore, parce que ce serait tronquer le fichier avant de l' cat ouvre pour la lecture. Aussi, vous voudrez peut-être ajouter \! -regex '.*/.*/.*' comme une option à trouver si vous ne souhaitez pas inclure les fichiers exécutables dans des sous-répertoires.

25voto

Andy White Points 36586

Votre meilleur pari avec des fichiers binaires est de leur donner une extension que vous pouvez facilement filtrer avec un modèle standard, ou de les placer dans les répertoires que vous pouvez filtrer au niveau du répertoire.

L'extension de la suggestion est plus applicable dans Windows, car les extensions sont la norme, et fondamentalement nécessaire, mais sous Unix, vous pouvez ou ne pouvez pas utiliser les extensions de vos fichiers binaires exécutables. Dans ce cas, vous pouvez les mettre dans une poubelle/ un dossier, et d'ajouter bin/ de votre .gitignore.

Dans votre très spécifique, petit-champ d'application exemple, vous pouvez simplement mettre des hello dans votre .gitignore.

16voto

Andrei Beliankou Points 149

Vous pouvez essayer dans votre .gitignore:

*
!*.c

Cette approche a de nombreux inconvénients, mais c'est acceptable pour les petits projets.

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