Ignorer les répertoires dans les repos Git sur Windows
Comment puis-je ignorer les répertoires ou les dossiers dans Git en utilisant msysgit sur Windows?
17 réponses
par défaut, windows explorer affichera .gitignore
alors qu'en fait le nom du fichier est .gitignore.txt
Git de ne pas utiliser .gitignore.txt
et vous ne pouvez pas renommer le fichier en .gitignore
parce que l'Explorateur pense que c'est un fichier de type gitignore sans nom.
Non ligne de commande solution:
You can rename a file to ".gitignore." and it will create ".gitignore"
il semble que pour ignorer les fichiers et les répertoires il y a deux façons principales:
-
.gitignore
- placer
.gitignore
fichier dans la racine de votre repo outre.git
dossier (dans Windows, assurez-vous que vous voir la vraie extension de fichier et ensuite faire.gitignore.
(avec le point à la fin de faire l'extension de fichier vide) - faire la configuration globale
~/.gitignore_global
et lancergit config --global core.excludesfile ~/.gitignore_global
pour ajouter ceci à votre configuration git
note: les fichiers suivis avant peuvent être déverrouillés en exécutant
git rm --cached filename
- placer
-
Repo exclude - pour les fichiers locaux qui n'ont pas besoin d'être partagés, vous n'avez qu'à ajouter le motif de fichier ou le répertoire au fichier
.git/info/exclude
. Ces règles ne sont pas commutées, de sorte que ne sont pas vus par les autres utilisateurs plus d'info ici
[mise à jour] Pour faire des exceptions dans la liste des fichiers ignorés, voir cette question .
j'ai eu quelques questions de la création d'un fichier dans l'explorateur windows avec un . au début.
une solution de contournement était d'entrer dans la cellule de commande et de créer un nouveau fichier en utilisant "edit"
pour demander à GIT d'ignorer certains fichiers ou dossiers, vous devez créer un fichier .gitignore
.
mais dans l'Explorateur de windows vous devez fournir un nom pour le fichier, vous ne pouvez pas créer le fichier avec l'extension juste, l'astuce est que créer un fichier texte vide et aller à l'invite de commande et changer le nom du fichier en .gitignore
ren "New Text Document.txt" .gitignore
ouvrez maintenant le fichier avec votre éditeur de texte préféré et ajoutez les noms de fichier / dossier que vous souhaitez que vous ignorer. vous pouvez également utiliser des caractères génériques comme ceci *.txt
espère que cela répond à votre question,
si vous voulez maintenir un dossier et pas les fichiers qu'il contient, il suffit de mettre un".gitignore " fichier dans le dossier avec "*" comme contenu. Ce fichier ignorera tout le contenu du dépôt. Mais .gitignore
sera inclus dans votre pension.
$ git add path/to/folder/.gitignore
Si vous ajoutez un dossier vide, vous recevez ce message (.gitignore est fichier caché)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
, utilisez l'option "-f" à force d'ajouter:
$ git add path/to/folder/.gitignore -f
dans Windows il y a une prise supplémentaire avec des barres obliques. À l'exclusion d'un seul répertoire dans .gitignore avec
dir_to_exclude /
peut fonctionner, mais à l'exclusion de tous les répertoires avec
/
cause des problèmes quand vous avez des noms de fichiers avec des espaces (comme my file.txt
) dans votre répertoire: Git bash échappe ces les espaces avec un antislash (comme my\ file.txt
) et Git pour Windows ne distingue pas entre /
et \
.
pour exclure tous les répertoires mieux utiliser:
* * /
deux astérisques consécutifs signifient contenu du répertoire.
aussi dans votre répertoire \.git\info
il y a un fichier exclu qui est effectivement la même chose que .gitignore
(je pense). Vous pouvez ajouter des fichiers et des répertoires à ignorer.
j'ai eu quelques problèmes pour que git le récupère .gitignore sous Windows. Le fichier $ GIT_DIR/info / exclude semble toujours fonctionner. L'inconvénient de cette approche, cependant, est que les fichiers du répertoire $GIT_DIR ne sont pas inclus dans le check-in et ne sont donc pas partagés.
(p. S. $GIT_DIR est habituellement le dossier caché nommé .git)
, Vous pouvez créer l' ".gitignore" fichier avec le contenu:
*
!.gitignore
Ça marche pour moi et simples.
pour ignorer un répertoire entier dans git, la façon la plus simple est d'inclure un .gitignore fichier dans le répertoire cible qui contient simplement " * "
Un exemple d'illustration,
Exemple De Système
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Objectif
- ignorer le contenu de / dirB /
"151960920 De Niveau Supérieur".gitignore (/racine./gitignore)
- C'est là que votre standard gitignore info va
Répertoire Ignoré .gitignore (/root / dirB.gitignore)
- Ce fichier se lit comme '*' et le répertoire est complètement ignoré, et tous les fichiers!
et c'est tout simple :)
je suppose que le problème est que votre arbre de travail est comme:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... avec le .gitignore
que vous décrivez. Cela vous donnera git status
sortie comme:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... si les fichiers index.html
n'ont pas encore été ajoutés au dépôt. (git voit qu'il y a des fichiers non marqués dans les répertoires de cache, mais ne rapporte que les répertoires.) Pour corriger cela, assurez-vous que vous avez ajouté et commis les fichiers index.html
:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... et votre git status
ressemblera alors à:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(évidemment, vous voulez aussi commettre .gitignore
, j'étais juste paresseux avec ce cas de test.)
juste au cas où vous devez exclure des sous-dossiers, vous pouvez utiliser le Joker **
pour exclure n'importe quel niveau de sous-répertoire.
**/build/output/Debug/
Quand tout le reste échoue essayez de modifier le fichier
/.git/info/exclure
et d'ajouter les répertoires que vous voulez à la fin du fichier, comme ceci:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
j'ai ajouté les dossiers "actifs" et "compilé" à la liste des fichiers et répertoires à ignorer.
Sur Unix:
touch .gitignore
Sous Windows:
echo > .gitignore
ces commandes exécutées dans un terminal vont créer un fichier .gitignore
dans l'emplacement courant.
alors il suffit d'ajouter des informations à ce fichier .gitignore
(en utilisant Notepad++ par exemple) quels fichiers ou dossiers devraient être ignorés. Enregistrez vos modifications. C'est tout :)
plus d'informations: https://www.atlassian.com/git/tutorials/saving-changes/gitignore
sur windows et Mac, si vous voulez ignorer un dossier nommé Flower_Data_Folder dans le répertoire courant, vous pouvez faire:
echo Flower_Data_Folder >> .gitignore
Si c'est un fichier nommé data.txt
echo de données.txt >>.gitignore
si c'est un chemin comme" données/mots de passe.txt "
echo "Données/les mots de passe.txt">>.gitignore.
j'ai eu des problèmes similaires, je travaille sur une chaîne d'outils windows avec un repo partagé avec des gars de linux, ils créent joyeusement des fichiers avec les mêmes noms [sauf pour les cas] dans un dossier donné.
l'effet est que je peux cloner le repo et avoir immédiatement des douzaines de fichiers "modifiés" qui si je coche dedans créerait des ravages.
j'ai windows réglé à sensible à la casse et git pour ne pas ignorer case mais il échoue toujours (dans les appels api win32 apparemment).
si je gitignore les fichiers alors je dois me rappeler de ne pas suivre le .dossier gitignore.
Mais j'ai trouvé une bonne réponse ici http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
Chris