Il s'agit de la commande git-update-index qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
git-update-index - Enregistre le contenu du fichier dans l'arborescence de travail dans l'index
SYNOPSIS
jet index-mise à jour
[--ajouter] [--supprimer | --force-remove] [--replace]
[--refresh] [-q] [--unmerged] [--ignore-missing]
[(--cacheinfo , , )...]
[--chmod=(+|-)x]
[--[no-]assume-inchangé]
[--[non-]ignorer l'arbre de travail]
[--ignore-sous-modules]
[--[no-]split-index]
[--[no-|force-]cache non suivi]
[--really-refresh] [--unresolve] [--again | -g]
[--info-seulement] [--index-info]
[-z] [--stdin] [--index-version ]
[--verbeux]
[--] [ ...]
DESCRIPTION
Modifie l'index ou le cache de répertoire. Chaque fichier mentionné est mis à jour dans l'index et
tout non fusionné or besoins la mise à jour l'état est effacé.
Voir aussi git-ajouter(1) pour une manière plus conviviale d'effectuer certaines des opérations les plus courantes
sur l'indice.
La façon dont jet index-mise à jour gère les fichiers dont il est informé peut être modifié à l'aide des différents
options:
OPTIONS
--ajouter
Si un fichier spécifié ne figure pas déjà dans l'index, il est ajouté. Le comportement par défaut est
pour ignorer les nouveaux fichiers.
--supprimer
Si un fichier spécifié est dans l'index mais qu'il est manquant, il est supprimé. Comportement par défaut
est d'ignorer le fichier supprimé.
--rafraîchir
Examine l'index actuel et vérifie si des fusions ou des mises à jour sont nécessaires en
vérifier les informations stat().
-q
Calmer. Si --refresh constate que l'index a besoin d'une mise à jour, le comportement par défaut est de
erreur. Cette option fait jet index-mise à jour continuer quand même.
--ignore-sous-modules
N'essayez pas de mettre à jour les sous-modules. Cette option n'est respectée que si elle est passée avant
--rafraîchir.
--non fusionné
Si --refresh trouve des modifications non fusionnées dans l'index, le comportement par défaut est l'erreur
dehors. Cette option fait jet index-mise à jour continuer quand même.
--ignore-manquant
Ignore les fichiers manquants lors d'un --refresh
--cacheinfo , , , --cacheinfo
Insérez directement les informations spécifiées dans l'index. Pour une compatibilité descendante, vous pouvez
donnez également ces trois arguments comme trois paramètres distincts, mais les nouveaux utilisateurs sont
encouragés à utiliser un formulaire à paramètre unique.
--index-info
Lire les informations d'index à partir de stdin.
--chmod=(+|-)x
Définissez les autorisations d'exécution sur les fichiers mis à jour.
--[no-]assume-inchangé
Lorsque cet indicateur est spécifié, les noms d'objet enregistrés pour les chemins ne sont pas mis à jour.
Au lieu de cela, cette option active/désactive le bit "assumer inchangé" pour les chemins. Quand le
Le bit "assume inchangé" est activé, l'utilisateur promet de ne pas modifier le fichier et autorise Git
supposer que le fichier d'arbre de travail correspond à ce qui est enregistré dans l'index. Si tu
voulez changer le fichier d'arbre de travail, vous devez désactiver le bit pour dire à Git. C'est
parfois utile lorsque vous travaillez avec un gros projet sur un système de fichiers très lent
lstat(2) appel système (par exemple cifs).
Git échouera (gracieusement) au cas où il aurait besoin de modifier ce fichier dans l'index, par exemple lorsque
fusionner dans un commit ; ainsi, dans le cas où le fichier supposé non suivi est modifié en amont, vous
devra gérer la situation manuellement.
--vraiment-rafraichir
J'aime --rafraîchir, mais vérifie les informations statistiques inconditionnellement, sans tenir compte de la
paramètre "supposer inchangé".
--[no-]skip-worktree
Lorsqu'un de ces drapeaux est spécifié, le nom d'objet enregistré pour les chemins n'est pas
mis à jour. Au lieu de cela, ces options définissent et désactivent le bit "skip-worktree" pour les chemins.
Voir la section "Passer le bit d'arbre de travail" ci-dessous pour plus d'informations.
-g, --encore
Fonctionne jet index-mise à jour lui-même sur les chemins dont les entrées d'index sont différentes de celles
du commit HEAD.
--non résolu
Restaure le non fusionné or besoins la mise à jour état d'un fichier lors d'une fusion s'il était
effacé par accident.
--info-seulement
Ne créez pas d'objets dans la base de données d'objets pour tous arguments qui suivent
drapeau; insérez simplement leurs ID d'objet dans l'index.
--force-supprimer
Supprimez le fichier de l'index même si le répertoire de travail contient toujours un tel fichier.
(Implique --remove.)
--remplacer
Par défaut, lorsqu'un chemin de fichier existe dans l'index, jet index-mise à jour refuse une tentative
pour ajouter un chemin/fichier. De même, si un chemin de fichier/fichier existe, un chemin de fichier ne peut pas être ajouté.
Avec l'indicateur --replace, les entrées existantes en conflit avec l'entrée ajoutée sont
automatiquement supprimé avec des messages d'avertissement.
--stdin
Au lieu de prendre la liste des chemins de la ligne de commande, lisez la liste des chemins du
entrée standard. Les chemins sont séparés par LF (c'est-à-dire un chemin par ligne) par défaut.
--verbeux
Signalez ce qui est ajouté et supprimé de l'index.
--index-version
Écrivez l'index résultant dans la version de format sur disque nommée. Versions prises en charge
sont 2, 3 et 4. La version par défaut actuelle est 2 ou 3, selon que
des fonctionnalités sont utilisées, telles que git add -N.
La version 4 effectue une simple compression du nom de chemin qui réduit la taille de l'index de 30 à 50 % sur
grands référentiels, ce qui se traduit par un temps de chargement plus rapide. La version 4 est relativement jeune
(publié pour la première fois en 1.8.0 en octobre 2012). Autres implémentations Git telles que JGit
et libgit2 ne le prend peut-être pas encore en charge.
-z
Significatif uniquement avec --stdin ou --index-info ; les chemins sont séparés par le caractère NUL
au lieu de LF.
--split-index, --no-split-index
Activez ou désactivez le mode d'indexation fractionnée. Si activé, l'index est divisé en deux fichiers,
$GIT_DIR/index et $GIT_DIR/sharedindex. . Les changements s'accumulent dans
$GIT_DIR/index tandis que le fichier d'index partagé contient toutes les entrées d'index reste inchangé.
Si le mode split-index est déjà activé et que --split-index est à nouveau donné, tous les changements
dans $GIT_DIR/index sont repoussés vers le fichier d'index partagé. Ce mode est conçu pour
index très volumineux qui prennent beaucoup de temps à lire ou à écrire.
--cache-non-suivi, --no-cache-non-suivi
Activez ou désactivez l'extension de cache non suivi. Cela pourrait accélérer pour les commandes qui
impliquent de déterminer les fichiers non suivis tels que le statut git. Le fonctionnement sous-jacent
le système et le système de fichiers doivent changer le champ st_mtime d'un répertoire si des fichiers sont ajoutés ou
supprimé dans ce répertoire.
--force-cache non suivi
Pour des raisons de sécurité, --untracked-cache effectue des tests sur le répertoire de travail pour s'assurer
un cache non suivi peut être utilisé. Ces tests peuvent prendre quelques secondes.
--force-untracked-cache peut être utilisé pour ignorer les tests.
--
N'interprétez plus d'arguments comme des options.
Fichiers sur lesquels agir. Notez que les fichiers commençant par . sont mis au rebut. Cela inclut ./file
et dir/./file. Si vous ne le souhaitez pas, utilisez des noms plus propres. de même pour
répertoires se terminant / et des chemins avec //
EN UTILISANT --RAFRAÎCHIR
--rafraîchir ne calcule pas un nouveau fichier sha1 ou ne met pas à jour l'index pour
changements de mode/contenu. Mais qu'est-ce que c'est faire est de "ré-apparier" les informations statistiques d'un fichier
avec l'index, afin de pouvoir actualiser l'index d'un fichier qui n'a pas été modifié mais
où l'entrée de stat est obsolète.
Par exemple, vous voudriez le faire après avoir fait un jet arbre de lecture, pour lier l'index stat
détails avec les fichiers appropriés.
EN UTILISANT --CACHEINFO OR --INFO-SEULEMENT
--cacheinfo est utilisé pour enregistrer un fichier qui n'est pas dans le répertoire de travail courant. Cette
est utile pour la fusion de caisses minimales.
Pour prétendre que vous avez un fichier avec mode et sha1 au chemin, dites :
$ git update-index --cacheinfo , ,
--info-seulement est utilisé pour enregistrer des fichiers sans les placer dans la base de données d'objets. C'est
utile pour les référentiels de statut uniquement.
Le --cacheinfo et --info-seulement se comportent de manière similaire : l'index est mis à jour mais l'objet
la base de données ne l'est pas. --cacheinfo est utile lorsque l'objet est dans la base de données mais que le fichier
n'est pas disponible localement. --info-seulement est utile lorsque le fichier est disponible, mais vous ne
souhaitez mettre à jour la base de données d'objets.
EN UTILISANT --INDEX-INFO
--index-info est un mécanisme plus puissant qui vous permet d'alimenter plusieurs définitions d'entrée
à partir de l'entrée standard et conçu spécifiquement pour les scripts. Il peut prendre des entrées de
trois formats :
1. mode SP sha1 TAB chemin
Le premier format est ce que "git-apply --index-info" rapporte, et utilisé pour reconstruire un
arbre partiel qui est utilisé pour l'arbre de base de fusion bidon lors du repli sur une fusion à trois.
2. mode SP type SP sha1 chemin TAB
Le deuxième format est de farcir jet ls-arbre sortie dans le fichier d'index.
3. mode SP sha1 SP étape TAB chemin
Ce format consiste à mettre les étapes d'ordre supérieur dans le fichier d'index et les correspondances jet fichiers-ls
--organiser sortie.
Pour placer une entrée de niveau supérieur dans l'index, le chemin doit d'abord être supprimé en alimentant un
mode=0 entrée pour le chemin, puis alimenter les lignes d'entrée nécessaires dans le troisième format.
Par exemple, en commençant par cet index :
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz
vous pouvez fournir l'entrée suivante à --index-info :
$ git index-mise-à-jour --index-info
0 0000000000000000000000000000000000000000 givre
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
La première ligne de l'entrée alimente 0 comme mode de suppression du chemin ; le SHA-1 ne
importe tant qu'il est bien formaté. Ensuite, la deuxième et la troisième ligne alimentent l'étage 1 et
les entrées de l'étape 2 pour ce chemin. Après ce qui précède, nous aurions ceci:
$ git ls-files -s
100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz
100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
EN UTILISANT "PRÉSUMER INCHANGÉ" BIT
De nombreuses opérations dans Git dépendent de votre système de fichiers pour avoir un lstat(2)
implémentation, de sorte que les informations st_mtime pour les fichiers d'arbre de travail puissent être vérifiées à moindre coût
pour voir si le contenu du fichier a changé par rapport à la version enregistrée dans le fichier d'index.
Malheureusement, certains systèmes de fichiers sont inefficaces lstat(2). Si votre système de fichiers est l'un des
eux, vous pouvez définir le bit "assume inchangé" sur les chemins que vous n'avez pas modifiés pour empêcher Git de
faire cette vérification. Notez que définir ce bit sur un chemin ne signifie pas que Git vérifiera le
contenu du fichier pour voir s'il a changé - cela oblige Git à omettre toute vérification et
supposer qu'il a pas modifié. Lorsque vous apportez des modifications aux fichiers de l'arborescence de travail, vous devez
dites-le explicitement à Git en supprimant le bit "assume inchangé", avant ou après
vous les modifiez.
Afin de définir le bit "assume inchangé", utilisez l'option --assume-unchanged. Pour désactiver, utilisez
--no-assume-inchangé. Pour voir quels fichiers ont le bit "assumer inchangé", utilisez git
ls-files -v (voir fichiers git-ls(1)).
La commande examine la variable de configuration core.ignorestat. Lorsque cela est vrai, les chemins
mis à jour avec les chemins git update-index... et les chemins mis à jour avec d'autres commandes Git qui
mettre à jour l'index et l'arbre de travail (par exemple jet vous inscrire --indice, jet index de paiement -u et jet
arbre de lecture -u) sont automatiquement marqués comme « assumer inchangé ». Notez que "supposer inchangé"
peu est pas définir si git update-index --refresh trouve que le fichier de l'arbre de travail correspond à l'index
(utilisez git update-index --really-refresh si vous voulez les marquer comme "assume inchangé").
EXEMPLES
Pour mettre à jour et actualiser uniquement les fichiers déjà extraits :
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
Sur un système de fichiers inefficace avec core.ignorestat défini
$ git update-index --really-refresh (1)
$ git update-index --no-assume-unchanged foo.c (2)
$ git diff --nom-seulement (3)
$ modifier foo.c
$ git diff --nom-seulement (4)
M foo.c
$ git update-index foo.c (5)
$ git diff --nom-seulement (6)
$ modifier foo.c
$ git diff --nom-seulement (7)
$ git update-index --no-assume-unchanged foo.c (8)
$ git diff --nom-seulement (9)
M foo.c
1. les forces lstat(2) pour définir des bits "supposer inchangés" pour les chemins qui correspondent à l'index.
2. marquer le chemin à éditer.
3. cela fait lstat(2) et trouve que l'index correspond au chemin.
4. cela fait lstat(2) et trouve l'index fait pas correspondre au chemin.
5. l'enregistrement de la nouvelle version dans l'index définit le bit « suppose inchangé ».
6. et il est supposé inchangé.
7. même après l'avoir modifié.
8. vous pouvez parler du changement après coup.
9. maintenant il vérifie avec lstat(2) et constate qu'il a été modifié.
SAUTER-WORKTREE BIT
Le bit Skip-worktree peut être défini en une (longue) phrase : lors de la lecture d'une entrée, si elle est
marqué comme skip-worktree, alors Git prétend que la version de son répertoire de travail est à jour et
lisez plutôt la version d'index.
Pour élaborer, "lecture" signifie vérifier l'existence du fichier, lire les attributs du fichier ou le fichier
teneur. La version du répertoire de travail peut être présente ou absente. S'il est présent, son contenu
peut correspondre ou non à la version de l'index. L'écriture n'est pas affectée par ce bit, le contenu
la sécurité est toujours la première priorité. Notez que Git Vous pouvez mettre à jour le fichier du répertoire de travail, c'est-à-dire
marqué skip-worktree, si cela est sûr (c'est-à-dire que la version du répertoire de travail correspond à l'index
Version)
Bien que ce bit ressemble à un bit supposé inchangé, son objectif est différent de
des bits supposés inchangés. Skip-worktree a également la priorité sur le bit suppose-inchangé lorsque
les deux sont réglés.
CONFIGURATION
La commande honore la variable de configuration core.filemode. Si votre référentiel est sur un
système de fichiers dont les bits exécutables ne sont pas fiables, il doit être défini sur non (voir git-
config(1)). Cela amène la commande à ignorer les différences dans les modes de fichier enregistrés dans le
index et le mode de fichier sur le système de fichiers s'ils ne diffèrent que sur le bit de l'exécutable. Sur un tel
un système de fichiers malheureux, vous devrez peut-être utiliser jet index-mise à jour --chmod=.
De la même manière, si la variable de configuration core.symlinks est définie sur non (voir git-
config(1)), les liens symboliques sont extraits en tant que fichiers simples, et cette commande ne
modifier un mode de fichier enregistré du lien symbolique au fichier normal.
La commande examine la variable de configuration core.ignorestat. Voir En utilisant "présumer inchangé"
Bits section ci-dessus.
La commande examine également la variable de configuration core.trustctime. Cela peut être utile quand
l'heure de changement d'inode est régulièrement modifiée par quelque chose en dehors de Git (les robots d'exploration du système de fichiers
et les systèmes de sauvegarde utilisent ctime pour marquer les fichiers traités) (voir git-config(1)).
Utilisez git-update-index en ligne à l'aide des services onworks.net