Comment utiliser la commande gitignore dans git

120

Je travaille pour la première fois sur git. J'ai poussé ma branche sur github et il a poussé toute la bibliothèque et tous les documents dans le github. Maintenant, que puis-je faire et comment puis-je utiliser la commande gitignore pour éviter à nouveau la même erreur.

user1559230
la source
1
.gitignoreest un fichier dans votre répertoire racine git. Ajoutez les modèles de nom pour les fichiers que vous souhaitez ignorer et les fichiers seront automatiquement ignorés.
LonelyWebCrawler
Je suis sur Ubuntu. Pouvez-vous s'il vous plaît dire le chemin du répertoire racine de git
user1559230
2
C'est le répertoire dans lequel vous avez utilisé git init. Le .gitrépertoire s'y trouve.
LonelyWebCrawler
2
Pour ceux qui ne savent pas comment utiliser gitignore - allez sur gitignore.io, vous pouvez taper tous les outils que vous utilisez (symfony, CakePHP, ZendFramework, wordpress, grunt, sublime text, netbeans, et ainsi de suite, vous obtenez la perceuse ...) et il générera le fichier git ignore pour vous. Si vous ne savez pas comment utiliser gitignore, je pense que la meilleure façon de l'apprendre est de regarder un bon exemple de cas d'utilisation (comme celui généré par gitignore.io. Si vous voulez l'utiliser à partir de la ligne cmd (façon geek ) voir ce tutoriel: vimeo.com/70609819
DevWL

Réponses:

163

Donc, d'après ce que vous avez dit, ces fichiers sont des bibliothèques / documentation que vous ne voulez pas supprimer mais que vous ne voulez pas non plus pousser github. Disons que vous avez votre projet dans le dossier your_projectet un répertoire doc: your_project/doc.

  1. Retirez-le du répertoire du projet (sans le supprimer réellement): git rm --cached doc/*
  2. Si vous ne possédez pas encore .gitignore, vous pouvez faire un intérieur à droite de votre dossier de projet: project/.gitignore.
  3. Mettez doc/*dans le .gitignore
  4. Préparez le fichier à valider: git add project/.gitignore
  5. Engagez: git commit -m "message".
  6. Poussez votre changement vers github .
u19964
la source
pouvez-vous s'il vous plaît me dire comment écrire le fichier .gitignore. c'est-à-dire comment écrire le chemin des dossiers et fichiers que je veux ignorer dans le fichier .gitignore. Merci
user1559230
Merci pour votre réponse. Avant de commettre, je devais exécuter git add -A
user1559230
4
Salut, le gitignore est juste un fichier texte brut. Il s'agit en fait de .gitignore (DOTgitignore). Mettez simplement le nom du fichier / type de fichier que vous voulez que git ignore, un par ligne. Exemple: sujee.net/tech/articles/gitignore
u19964
42

Si vous n'avez pas de fichier .gitignore, utilisez d'abord:

touch .gitignore

puis cette commande pour ajouter des lignes dans votre fichier gitignore:

echo 'application/cache' >> .gitignore

Faites attention aux nouvelles lignes

Serdar Değirmenci
la source
Il n'est pas nécessaire de touchcommencer par le fichier. >>est également le >cas si le fichier n'existe pas déjà. echoajoute une nouvelle ligne à la fin de la sortie. Vous pouvez arrêter cela avec -n. Si vous avez besoin différents ignores, soit faire divers echos, ou l' utilisation -e, comme suit: echo -e "**/cache/\n**.pyc" >> .gitignore. Le double astérisque correspond également à tous les fichiers creusés dans des dossiers de manière récursive. À utiliser /à la fin des dossiers, au cas où.
mazunki
1
@Andrew tl; dr: Ajoutez chaque fichier ignoré avec echo "file_to_be_ignored" >> .gitignore, pas besoin de faire autre chose. Terminez les noms de dossier par /as echo "**/modules/" >> .gitignore.
mazunki
Pourquoi mon commentaire a-t-il été supprimé
Andrew
12

git ignore est une convention dans git. La définition d'un fichier portant le nom de .gitignore ignorera les fichiers de ce répertoire et les répertoires plus profonds qui correspondent aux modèles que le fichier contient. L'utilisation la plus courante est simplement d'avoir un fichier comme celui-ci au niveau supérieur. Mais vous pouvez en ajouter d'autres plus profondément dans votre structure de répertoires pour ignorer encore plus de modèles ou arrêter de les ignorer pour ce répertoire et par la suite les plus profonds.

De même, vous pouvez "annuler l'ignorance" de certains fichiers dans une structure plus profonde ou un sous-ensemble spécifique (c'est-à-dire que vous ignorez * .log mais que vous voulez toujours suivre important.log) en spécifiant des modèles commençant par !. par exemple:

*.log !important.log

ignorera tous les fichiers journaux mais suivra les fichiers nommés important.log

Si vous suivez des fichiers que vous vouliez ignorer, supprimez-les, ajoutez le modèle à votre fichier .gitignore et ajoutez toutes les modifications

# delete files that should be ignored, or untrack them with 
# git rm --cached <file list or pattern>

# stage all the changes git commit
git add -A 

à partir de maintenant, votre référentiel ne sera plus suivi.

Si vous souhaitez nettoyer votre historique, vous pouvez

# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10 

puis marquez chaque commit avec eou edit. Enregistrez le plan. Maintenant, git rejouera votre historique en s'arrêtant à chaque commit que vous avez marqué avec e. Ici, vous supprimez les fichiers que vous ne voulez pas, git add -Apuis git rebase --continuejusqu'à ce que vous ayez terminé. Votre histoire sera propre. Assurez-vous de vous dire à vos collègues que vous devrez forcer la poussée et qu'ils devront rebaser ce qu'ils n'ont pas encore poussé.

Adam Dymitruk
la source
8

Il y a un fichier dans votre répertoire racine git nommé .gitignore. C'est un fichier, pas une commande. Il vous suffit d'insérer les noms des fichiers que vous souhaitez ignorer, et ils seront automatiquement ignorés. Par exemple, si vous souhaitez ignorer tous les fichiers d'enregistrement automatique emacs, qui se terminent par ~, vous pouvez ajouter cette ligne:

*~

Si vous souhaitez supprimer les fichiers indésirables de votre branche, vous pouvez utiliser git add -A, qui " supprime les fichiers qui ne sont plus dans l'arborescence de travail ".

Remarque: ce que j'ai appelé le "répertoire racine git" est simplement le répertoire dans lequel vous avez utilisé git initpour la première fois. C'est également là que vous pouvez trouver le .gitrépertoire.

LonelyWebCrawler
la source
qu'adviendra
4

Si vous n'avez pas de fichier .gitignore. Vous pouvez en créer un nouveau en

touch .gitignore

Et vous pouvez exclure un dossier en entrant la commande ci-dessous dans le fichier .gitignore

/folderName

poussez ce fichier dans votre référentiel git afin que lorsqu'une nouvelle personne clone votre projet, elle n'ait pas à l'ajouter à nouveau

karthik vishnu kumar
la source
2

Il existe plusieurs façons d'utiliser gitignore git

  • en spécifiant par le nom de fichier spécifique. par exemple, pour ignorer un fichier
    appelé readme.txt, il suffit d'écrire readme.txt dans le fichier .gitignore.
  • vous pouvez également écrire le nom de l'extension de fichier. Par exemple, pour
    ignorer tous les fichiers .txt, écrivez * .txt.
  • vous pouvez également ignorer un dossier entier. par exemple, vous voulez ignorer le
    dossier nommé test. Ensuite, écrivez simplement test / dans le fichier.

créez simplement un fichier .gitignore et écrivez ce que vous voulez ignorer un exemple de fichier gitignore serait:

# NPM packages folder.
node_modules

# Build files
dist/

# lock files
yarn.lock
package-lock.json

# Logs
logs
*.log
npm-debug.log*

# node-waf configuration
.lock-wscript

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Jest Coverage
coverage

.history/

Vous pouvez en trouver plus sur la documentation git gitignore

Afaq Ahmed Khan
la source
1

sur mon mac, j'ai trouvé ce fichier .gitignore_global .. il était caché dans mon répertoire personnel, alors faites un ls -altrpour le voir.

J'ai ajouté des fichiers eclipse que je voulais que git ignore. le contenu ressemble à ceci:

 *~
.DS_Store
.project
.settings
.classpath
.metadata
j2emanue
la source
quand j'ai mis le fichier .gitignore dans mon dossier de projet, cela a gâché mon projet eclipse localement. savez-vous pourquoi cela pourrait arriver et comment l'empêcher? pour l'instant, je reste loin de .gitignore.
JesseBoyd
Je n'utilise plus eclipse. Inteilji now
j2emanue