Déplacer Git EFT suivi des fichiers de moins régulière Git
J'ai un projet où j'ai stocké des fichiers vidéo avec Git de l'EPA. Maintenant, j'ai couru dans quelques complications avec mon serveur de build qui ne supportent pas encore Git de l'EPA. Comme c'est un service externe, je peux pas vraiment d'incidence sur le processus de construction, et donc aurait envie de déplacer les fichiers de sous Git EFT retour à la "normale" de Git. J'ai réussi à annuler le suivi des types de fichiers avec git lfs untrack '<file-type>'
mais git lfs ls-files
donne encore une liste des fichiers ajoutés précédemment.
J'imagine que je pourrais supprimer les fichiers, pousser les modifications manuellement, puis les rajouter, mais est-ce vraiment la meilleure façon de faire les choses?
Vous devez vous connecter pour publier un commentaire.
J'ai récemment rencontré ce problème au cas où des biens ont été accidentellement ajouté à git-lfs sur une branche qui ne devrait pas avoir été. Ma solution a été:
Le résultat est une réécriture de l'git eft-oid sha256 pointeurs avec le standard le contenu du fichier.
(Modifier 2019-03): accepté La réponse a été modifié pour fournir une solution simple pour les cas les plus simples. Voir aussi la des modifications dans la réponse VonC pour des solutions de rechange dans le cas où vous avez un cas plus complexe à portée de main.
.gitattributes
est correctement configuré pour suivre les fichiers que je veux, cette solution a fonctionné à merveille. Beaucoup plus simple que celle de certains autres solutions posté.Question 641 mentionne le même problème.
La réponse a été:
Après cela, tous les fichiers ajoutés ira directement à git.
Mais ce n'était pas si simple:
Mise à jour de Mars 2016, le question 957 illustre une solution possible par
tstephens619
:La responsable
ttaylorr
ajoute:git rm --cached <file>
->git add <file>
->git commit
aussi longtemps que vous avez suivi correctement configuré.uninit
de commande. Au lieu degit lfs uninit
j'ai eu à utilisergit lfs uninstall
.Comme de Git 2.16 (publié le Jan 17, 2018), vous pouvez le faire facilement avec le
--renormalize
drapeau degit add
:De Git de la documentation:
La clé ici est "tous les dossiers". Normalement, les filtres ne sont exécutées lorsqu'un Git opération modifie un fichier dans le travail de l'arbre. Modification de l'EPA liste blanche dans
.gitattributes
n'est pas un Git opération, et donc l'indice se retrouve dans un état incohérent après l'exécution degit lfs untrack
. L'exécution degit add --renormalize .
indique à Git pour ré-exécuter des filtres sur chaque fichier dans le référentiel, ce qui garantit que tous les fichiers qui devrait être dans les EPA sont—et que tous les fichiers qui ne devraient pas être ne le sont pas.J'ai eu des problèmes pour faire des étapes dans Windows.
Pour supprimer tous git eft suivi des fichiers et de restaurer les fichier d'origine, je n'ai la suite dans git bash:
Supprimé .gitattributes
git lfs ls-files | cut -d ' ' -f 3 > lfs-files.txt
Exécuter le code suivant:
Extrait de:
Vous ne pouvez pas enlever quoi que ce soit à partir de GIT de l'EPA, et bien que les solutions présentées ici peuvent travailler (avec des modifications), ils nécessitent beaucoup d'efforts et peut avoir des effets secondaires sur votre dépôt.
Si vous êtes arrivé ici, il est temps de vous demander si vous souhaitez gérer vos fichiers volumineux avec le GIF de l'EPA et si GIT lui-même (qui est intrinsèquement mauvais dans la gestion de gros fichiers, parce que c'est un distributed version control system) est un bon choix.
Si vous avez de nombreux fichiers volumineux et vous êtes la seule organisation à travailler sur votre projet, quelque chose comme de la Subversion peut fonctionner mieux pour vous.