Quelque part (autour des versions 1.6.x, je pense), git a pris conscience des changements dans les sous-modules. Cela ne sert qu'à m'ennuyer:
Fournisseur de statut $ git | grep modifié: # modifié: fournisseur / rails (contenu modifié)
$ git diff vendeur / diff --git a / vendor / rails b / vendor / rails --- a / vendeur / rails +++ b / vendeur / rails @@ -1 +1 @@ -Sous-projet commit 046c900df27994d454b7f906caa0e4226bb42b6f + Sous-projet commit 046c900df27994d454b7f906caa0e4226bb42b6f-dirty
Veuillez l'arrêter?
Éditer:
Ok, donc j'ai une réponse. Maintenant, j'ai une autre question:
Puis-je mettre ça ~/.gitconfig
? D'après mon initiale, il semble que je ne peux pas, et je n'ai rien vu de prometteur en parcourant le patch. (Je suppose que je peux toujours créer un alias.)
Réponses:
Il est même possible de définir le mode Ignorer pour chaque sous-module ajouté dans le fichier .gitmodules.
Aujourd'hui encore, j'ai rencontré ce problème et j'ai immédiatement écrit un article dans mon blog à ce sujet après avoir trouvé une solution: Comment ignorer les changements dans les sous-modules git
L'essentiel:
Ajoutez simplement une ligne à ce
.gitmodules
fichier:la source
git status
travailler comme prévu. Vous avez également besoin d'au moins 1.7.4 ou mieux, je crois..gitignore
fichier, il existe une version privée appeléeexclude
, située dans.git/info/
, qui n'est pas gérée par la version. Existe-t-il un fichier correspondant pour le.gitmodules
fichier, qui vous permettra de supprimer les modifications dans le sous-module uniquement dans votre instance du référentiel parent, sans apporter de modifications à.gitmodules
?Il existe deux types d'avis de modification que vous pouvez supprimer.
La première est celle
untracked content
qui se produit lorsque vous apportez des modifications à votre sous-module mais que vous ne les avez pas encore validées. Le référentiel parent les remarque et legit status
signale en conséquence:modified: modules/media (untracked content)
Vous pouvez les supprimer avec:
Cependant, une fois que vous avez validé ces modifications, le référentiel parent en prendra à nouveau connaissance et les signalera en conséquence:
Si vous souhaitez également les supprimer, vous devez ignorer les
all
modificationsla source
.gitignore
fichier, il existe une version privée appeléeexclude
, située dans.git/info/
, qui n'est pas gérée par la version. Existe-t-il un fichier correspondant pour le.gitmodules
fichier, qui vous permettra de supprimer les modifications dans le sous-module uniquement dans votre instance du référentiel parent, sans apporter de modifications à.gitmodules
?ignore = all
partie est utile.Mise à jour: Voir (et voter pour) la réponse de nilshaldenwang concernant la possibilité d'ajouter au fichier un paramètre de configuration pour ignorer l'état sale d'un sous-module donné.
.gitmodules
Donc git 1.7.2 est sorti et inclut l'
--ignore-submodules
option pourstatus
.De
git help status
:La valeur que je veux est
dirty
.J'utilise un alias parce que je suis paresseux:
la source
ignore=dirty
des entrées individuelles dans le.gitmodules
fichier ici.Comme vous l'avez mentionné, le sous-module patch git: ignore les sous-modules sales pour le résumé et le statut est en cours d'élaboration.
Également annoncé dans la version Git 1.7.2-rc2 :
Sens:
Considérer cela comme une option n'est pas exactement l' approche choisie pour l'instant :
"
git diff
" et "git status
" utiliseront cette valeur de configuration pour chaque sous-module.L'utilisation de "
--ignore-submodule
" remplace cette valeur par défaut (et le nouveau paramètre "aucun" y sera ajouté pour pouvoir remplacer les paramètres de configuration).Une autre approche pour rendre git status (ou toute commande git) pour ignorer un sous-module particulier est disponible avec Git 2.13 (Q2 2017):
Pour en savoir plus, consultez " Ignorer les nouveaux commits pour le sous-module git ".
la source
ignore = dirty
"Vous pouvez aussi utiliser
à définir
submodule.ignore = dirty
dans votre.git/config
fichier.--global
définira l'indicateur Ignorer dans votre~/.gitconfig
et s'appliquera à tous vos référentiels. Sans cela, il ne devrait s'installer que.git/config
pour le dépôt dans lequel vous vous trouvez actuellement.La seule documentation que je peux trouver à ce sujet se trouve
submodule.<name>.ignore
dans la documentation git-config . Je l'ai déplacé d'un fichier .gitmodules dans mon ~ / .gitconfig et cela fonctionne toujours pour moi.la source
Vous devez ajouter
à .gitmodules
la source
Donc git v1.7.2-rc2 a ce que je veux:
Construire votre propre git howto:
la source
git clone git://git.kernel.org/pub/scm/git/git.git git
.J'ai répondu à cette question ici plus en détail.
Courez
pour ajouter une option de configuration locale pour ignorer ces changements.
la source
Vous voudrez peut - être de ne pas ajouter
ignore = dirty
à.gitmodules
, vous voudrez peut - être plus sélectif sur les changements que vous vouliez ignorer.Pour ce faire, ajoutez des modèles à
.git/submodule_foo/bar/info/exclude
, où sesubmodule_foo/bar/
trouve le chemin du sous-module.Les modèles sont similaires aux modèles que vous ajouteriez
.gitignore
, la racine étant le répertoire du sous-module. Par exemple, ce modèle ignore lebuild
répertoire dans le sous-modulesubmodule_foo/bar/
:la source