0
votes

Suppression des fichiers indésirables du référentiel git distant

J'ai accidentellement oublié d'inclure un fichier .gitignore lors du transfert d'un référentiel git local existant vers Bitbucket. En conséquence, une grande quantité de fichiers .aux indésirables apparaît sur le référentiel distant.

Les supprimer directement sur Bitbucket prendra au mieux du temps. Y a-t-il un bon moyen de le faire localement? Ou y a-t-il un moyen sûr de "recommencer" essentiellement afin que je puisse inclure le fichier .gitignore?

De plus, pour une raison quelconque, les fichiers .aux sont introuvables dans mes fichiers locaux. Ils viennent d'apparaître sur Bitbucket après mon lancement initial.

Je suis novice avec git, donc les solutions explicites sont particulièrement appréciées.

MISE À JOUR: Malheureusement, je n'ai pas réussi à résoudre le problème avec l'une des solutions proposées (ce dont je suis reconnaissant). J'ai fini par simplement copier mes fichiers, puis revenir au commit initial. J'ai ensuite recopié les fichiers dans le répertoire d'origine. Enfin, je les ai repoussés avec le fichier .gitignore inclus cette fois.


4 Réponses :


0
votes

Commencez par annuler le suivi de tous les fichiers existants à l'aide de la commande suivante:

git rm -r - en cache

puis mettez à jour votre .gitignore et validez / push à nouveau.


1 commentaires

Cela n'a rien fait.



0
votes

Il y a plusieurs façons de faire cela, par exemple:

  • accédez à une nouvelle branche en utilisant git checkout -b et supprimez les fichiers localement
  • modifier le commit en utilisant git commit --amend ou le pousser comme nouveau commit
  • retournez à votre agence principale
  • alors vous pouvez ajouter le .gitignore et le valider également

Une autre façon:

  • annuler le commit en utilisant git revert (cela créera un nouveau commit qui supprimera entièrement le commit)
  • ajoutez à nouveau le commit (par exemple en utilisant git cherry-pick )
  • ajoutez les fichiers au .gitignore
  • valider ce nouveau commit

Une troisième façon consiste à utiliser

git rm - en cache qui est bien documenté ici .

Faites-moi savoir si vous avez besoin de plus d'informations.

PS: vérifiez toujours vos commits en utilisant git status


0 commentaires

0
votes

ajoutez le chemin que vous voulez ignorer à .gitignore

puis arrêtez de suivre le fichier au chemin spécifié en le supprimant de l'index en exécutant:

git rm --cached <file_path>


0 commentaires

0
votes

D'accord. Voici la stratégie que je suivrais. Avant cela, supprimez le .gitignore de votre projet. Maintenant, votre arbre de travail et votre zone de rassemblement seraient propres. Et le dépôt local et distant contiendrait des fichiers .aux.

Étape 1: Supprimez le dernier commit du dépôt local.

git add .
git commit -m "message"
git push origin master

Cela supprimera le dernier commit qui déplacera effectivement vos fichiers .aux de la zone de commit vers la zone de préparation.

Étape 2: Poussez le dépôt local avec force dans le dépôt bitbucket distant.

git reset head

À ce stade, si vous vérifiez votre dépôt bitbucket, vous constaterez que votre commit précédent est supprimé. Donc, la moitié des dégâts est récupérée.

Étape 3: Apportez tous les fichiers de la zone de transit dans la zone de travail.

git push -f origin master

Étape 4: Ajoutez .gitignore au projet.

Étape 5: Exécutez git status pour vérifier si vous pouvez voir vos fichiers ignorés. Je suis sûr que vous ne les verrez pas. Cependant, vous verrez tous vos fichiers voulus que vous souhaitiez commettre plus tôt mais que vous avez validés avec ceux que vous ne vouliez pas.

Étape 6: Ajoutez tous les fichiers du répertoire de travail à la zone de préparation , validez-les et envoyez-les au référentiel distant.

git reset --soft head~1 


2 commentaires

Dois-je supprimer le .gitignore des dépôts locaux et distants?


Je pensais que vous aviez ajouté .gitignore dans votre local seulement après avoir poussé .aux dans le repo distant par erreur. La raison pour laquelle je vous demande de supprimer .gitignore est de garder la zone de travail et de préparation propre. Si git status ne montre rien à valider, pas besoin de faire quoi que ce soit. Passez simplement à l'étape 1.