2011-11-24 1 views
0

J'ai une application sur heroku, et malheureusement notre dépôt git avait des fichiers qui ne devraient pas être engagés depuis le début.git: impossible de pousser les modifications après l'utilisation de filter-branch pour supprimer le fichier

Mais maintenant, d'autres personnes sont sur le point de collaborer au projet et ces fichiers sont toujours en train de créer des conflits de fusion. Je dois donc supprimer cela. Je l'ai utilisé cette commande pour supprimer ces fichiers de toute l'histoire avec succès commettras:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r foldername' HEAD

Mais je ne peux pas pousser ces modifications sur le serveur, je suis obligé de tirer avant, donc perdre mes changements par branche de filtre.

Comment puis-je transférer ces modifications sur le serveur afin que nous n'ayons plus de problèmes de conflit?

Merci d'avance.

+1

Avez-vous essayé 'git push --force' pour le moment? Si oui, le serveur interdit-il de pousser forcé? –

+0

Je ... ne savais pas à ce sujet :(Cela a fonctionné parfaitement, je ne peux pas accepter votre commentaire comme une réponse, cependant.Merci beaucoup! – MarceloJ

Répondre

1

L'exécution de git push --force ne vous obligera pas à tirer, c'est-à-dire qu'elle ignorera la recherche d'un ancêtre commun. Le serveur peut cependant interdire l'utilisation de cette option, au moins avec un crochet.

Une note sur la réécriture de l'historique poussé en général: C'est correct si vous êtes sûr que personne d'autre n'a encore cloné le référentiel. Sinon, réécrire l'histoire est un gros non-non car cela va causer beaucoup de problèmes aux personnes qui travaillent sur leurs propres succursales. (Une exception à cela peut être la branche develop/pu comme par exemple le repository officiel git.) Dans leur configuration, la branche sera régulièrement réinitialisée à master, généralement après une nouvelle version ou similaire, et cette action est bien documentée. ne surprendra personne.)

Questions connexes