Comment puis-je ignorer les répertoires ou les dossiers dans Git à l'aide de msysgit sous Windows?
Créez un fichier nommé .gitignore
dans le répertoire de votre projet. Ignorer les répertoires en entrant le nom du répertoire dans le fichier (avec une barre oblique ajoutée):
dir_to_ignore/
Plus d'infos ici .
Par défaut, Windows Explorer affichera .gitignore
en fait, le nom du fichier est .gitignore.txt
.
Git n'utilisera pas .gitignore.txt
Et vous ne pouvez pas renommer le fichier en .gitignore
parce qu'Explorer considère qu'il s'agit d'un fichier de type gitignore sans nom.
Solution non en ligne de commande:
Vous pouvez renommer un fichier en ".gitignore." et il va créer ".gitignore"
Il semble que pour ignorer les fichiers et les répertoires, il y a deux manières principales:
. gitignore
.gitignore
à la racine de votre référentiel en plus du dossier .git
(sous Windows, assurez-vous que voir l’extension de fichier true , puis créez .gitignore.
(avec le point à la fin pour faire une extension de fichier vide))~/.gitignore_global
et exécuter git config --global core.excludesfile ~/.gitignore_global
pour l'ajouter à votre configuration gitremarque: les fichiers suivis auparavant peuvent être décompressés en exécutant git rm --cached filename
Repo exclude - Pour les fichiers locaux qu'il n'est pas nécessaire de partager, vous ajoutez simplement le modèle de fichier ou le répertoire au fichier .git/info/exclude
. Ces règles ne sont pas validées, donc ne sont pas vues par les autres utilisateurs plus d'infos ici
[updated] Pour faire des exceptions dans la liste des fichiers ignorés, voir cette question .
J'ai eu quelques problèmes lors de la création d’un fichier dans Windows Explorer avec un fichier. au début.
une solution de contournement consistait à entrer dans la commande et à créer un nouveau fichier en utilisant "edit"
pour que GIT ignore certains fichiers ou dossiers, vous devez créer le fichier .gitignore
.
mais dans l'Explorateur Windows, vous devez fournir un nom au fichier. Vous ne pouvez pas créer de fichier avec une extension. L'astuce consiste à créer un fichier texte vide, à accéder à la commande Invite 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 ignorer. vous pouvez aussi utiliser des jokers comme ceci *.txt
espérons que cela répond à votre question
Si vous souhaitez conserver un dossier et non les fichiers qu'il contient, il suffit de placer un fichier ".gitignore" dans le dossier avec "*" comme contenu. Ce fichier ignorera tout le contenu du référentiel. Mais .gitignore
sera inclus dans votre rapport.
$ git add path/to/folder/.gitignore
Si vous ajoutez un dossier vide, vous recevez ce message (.gitignore est un 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
Donc, utilisez "-f" pour forcer add:
$ git add path/to/folder/.gitignore -f
Sous Windows, il y a un problème supplémentaire avec les barres obliques. Exclure un seul répertoire dans . Gitignore avec
dir_à_exclure /
fonctionnera éventuellement, mais en excluant tous les répertoires avec
/
pose des problèmes lorsque vous avez des noms de fichiers avec des espaces (comme my file.txt
) dans votre répertoire: Git bash les échappe par une barre oblique inversée (comme my\ file.txt
) et que Git pour Windows ne fait pas la distinction entre /
et \
.
Pour exclure tous les répertoires, mieux utiliser:
** /
Deux astérisques consécutifs signifient le contenu du répertoire.
Également dans votre répertoire \.git\info
projects, il y a un fichier d'exclusion qui est en réalité la même chose que .gitignore
(je pense). Vous pouvez ajouter des fichiers et des répertoires à ignorer.
Pour ignorer un répertoire entier dans git, le moyen le plus simple consiste à inclure un fichier .gitignore dans le répertoire cible qui contient simplement "*".
Un exemple illustratif,
Exemple de système
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
objectif
Top Level .gitignore (/root/.gitignore)
Répertoire ignoré .gitignore (/root/dirB.gitignore)
et c'est aussi simple que ça :)
Juste au cas où vous auriez besoin d'exclure des sous-dossiers, vous pouvez utiliser le caractère générique **
pour exclure n'importe quel niveau de sous-répertoire.
**/build/output/Debug/
Vous pouvez créer le fichier ".gitignore" avec le contenu:
*
!.gitignore
Cela fonctionne pour moi et simples.
Quand tout le reste échoue essayez d’éditer le fichier
/.git/info/exclude
et en ajoutant 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és" à la liste des fichiers et répertoires à ignorer.
J'ai eu quelques problèmes pour que Git récupère le fichier .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 l'enregistrement, et ne sont donc pas partagés.
p.s.
$GIT_DIR
est généralement le dossier caché nommé.git
Sous Unix:
touch .gitignore
Sous Windows:
echo > .gitignore
Ces commandes exécutées dans un terminal créeront un fichier .gitignore
à l'emplacement actuel.
Ensuite, ajoutez simplement des informations à ce fichier .gitignore
(en utilisant Notepad ++ par exemple), quels fichiers ou dossiers doivent être ignorés. Enregistrez vos modifications. C'est ça :)
Plus d'informations: https://www.atlassian.com/git/tutorials/saving-changes/gitignore
Je suppose que le problème est que votre arbre de travail ressemble à ceci:
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
une 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/
... if les fichiers index.html
n'ont pas encore été ajoutés au référentiel. (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 résoudre ce problème, assurez-vous d'avoir ajouté et validé 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.)
Sous Windows et Mac, si vous souhaitez ignorer un dossier nommé Flower_Data_Folder dans le répertoire actuel, vous pouvez procéder comme suit:
echo Flower_Data_Folder >> .gitignore
Si c'est un fichier nommé data.txt
echo data.txt >> .gitignore
si c'est un chemin comme "Data/passwords.txt"
echo "Data/passwords.txt" >> .gitignore.
J'avais des problèmes similaires, je travaille sur une chaîne d'outils Windows avec un référentiel partagé avec des gars de Linux, ils créent heureusement des fichiers avec les mêmes noms (à l'exception des cas) dans un dossier donné.
L'effet est que je peux cloner le repo et avoir immédiatement des dizaines de fichiers "modifiés" qui, si je me connectais, créeraient des dégâts.
J'ai Windows configuré pour sensible à la casse et git de ne pas ignorer la casse, mais il échoue toujours (dans les appels Win32 api apparemment).
Si je gitignore les fichiers, je dois me rappeler de ne pas suivre le fichier .gitignore.
Mais j’ai trouvé une bonne réponse ici http://archive.robwilkerson.org/2010/02/02/git-tip-ignore-changes-to-tracked-files/index.html
Chris