548 votes

Retirer temporairement les fichiers de git

J'ai installé un git local sur ma machine. Lorsque j'ai initialisé git, j'ai ajouté des libs et des binaires pré-compilés. Cependant, maintenant, pendant mon développement, je ne veux pas vérifier ces fichiers par intermittence. Je ne veux pas supprimer ces fichiers du repo. Existe-t-il un moyen de ne pas garder une trace de ces fichiers jusqu'à ce que je termine mon développement. (Je pense que je ne peux pas utiliser .gitignore car il ne fonctionne que pour les fichiers qui ne sont pas dans git. Je veux désactiver temporairement le suivi des fichiers).

0 votes

0 votes

8voto

Eric Spreen Points 46

Le git-book mentionne cela dans la section 2.4 : "Undoing Things". En gros, ce que vous devez faire est de réinitialiser l'état de l'index pour certains fichiers à l'état HEAD, c'est-à-dire à l'état du dernier checkout (ou commit). Cela annule la mise à disposition du fichier dans l'index actuel. La commande pour cette tâche est git reset .[1]

Donc, la commande que vous devez exécuter est :

git reset HEAD /path/to/file

Les versions les plus récentes de git (depuis 1.6 environ, je crois) donnent cette commande (et bien d'autres) comme conseil lors de l'exécution de la commande git status . Ces versions sont très conviviales. Une astuce personnelle : si vous ne mettez en scène que quelques fichiers, utilisez git add -i . Cela lancera l'outil de staging interactif, ce qui rend les choses particulièrement faciles. Par ailleurs, je recommande vivement la lecture du livre, car il est très explicite sur l'utilisation de git dans des situations pratiques.

[1] http://www.git-scm.com/book

0 votes

Je suis d'accord que git reset [file] est le moyen le plus simple de déstocker des fichiers.

21 votes

Défaire et défaire les traces sont deux choses différentes.

0 votes

Dans ce cas, l'utilisation de git reset n'annulera pas les modifications apportées au fichier. Au contraire, il annulera le fichier, laissant les changements intacts.

5voto

Vraj Pandya Points 345

Je suppose que vous vous demandez comment enlever TOUTES les fichiers du dossier de construction ou du dossier bin, plutôt que de sélectionner chaque fichier séparément.

Vous pouvez utiliser cette commande :

git rm -r -f /build\*

Assurez-vous que vous êtes dans le répertoire parent du répertoire de construction.
Cette commande va "supprimer" récursivement tous les fichiers qui sont dans les dossiers bin/ ou build/. Par le mot "supprimer", je veux dire que git va prétendre que ces fichiers sont "supprimés" et que ces fichiers ne seront pas suivis. Le git marque réellement ces fichiers comme étant en mode suppression.

Assurez-vous que votre fichier .gitignore est prêt pour les prochains commits.
Documentation : git rm

4voto

AlainD Points 59

Une alternative à assume-unchanged es skip-worktree . Ce dernier a une signification différente, quelque chose comme "Git ne devrait pas suivre ce fichier. Les développeurs peuvent, et sont encouragés, à effectuer des modifications locales."

Dans votre situation, vous ne souhaitez pas suivre les modifications apportées aux fichiers de construction (généralement volumineux), assume-unchanged est un bon choix.

Dans la situation où le fichier doit avoir un contenu par défaut et où le développeur est libre de modifier le fichier localement, mais ne doit pas vérifier ses changements locaux sur le dépôt distant, skip-worktree est un meilleur choix.

Une autre option élégante est d'avoir un fichier par défaut dans le dépôt. Disons que le nom du fichier est BuildConfig.Default.cfg . Le développeur doit le renommer localement en BuildConfig.cfg et ils peuvent faire tous les changements locaux dont ils ont besoin. Maintenant, ajoutez BuildConfig.cfg a .gitignore donc le fichier est non tracé.

Ver cette question qui contient des informations générales intéressantes dans la réponse acceptée.

1voto

divya d Points 93

Pour supprimer tous les fichiers Untrack. Essayez cette commande en terminal

 git clean -fdx

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