4 votes

Supprimer un fichier que je n'aurais pas dû commiter dans Git

Alors j'ai fait une mauvaise chose.

Quelque part au cours de la réalisation d'un tas de changements, j'ai réalisé qu'un fichier involontaire s'était glissé dans un commit ou deux. Parce que je ne l'ai réalisé que plus tard, les commits qui incluaient le fichier ont maintenant été poussés vers le distant. Je veux et j'ai besoin des commits, je veux juste enlever ce fichier spécifique de ceux-ci.

Ce que je dois faire, bien sûr, c'est fouiller dans tous les coins et recoins de mon arbre (local et distant) et supprimer ce fichier. J'ai essayé plusieurs choses en utilisant filter-branch y filter-tree mais lorsque j'essaie de pousser les changements sont rejetés.

Quelles sont mes options ? Qu'est-ce que je fais de mal ?

Merci.

UPDATE

À la demande de Max, voici le message que je reçois lorsque j'essaie de pousser :

$ git push origin develop
To git@codaset.com:robwilkerson/cakephp-polyclip-plugin.git
! [rejected]        develop -> develop (non-fast-forward)
error: failed to push some refs to 'git@codaset.com:robwilkerson/cakephp-polyclip-plugin.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about fast-forwards' section of 'git push --help' for details.

11voto

Petros Points 4430

Il y a un bon guide sur GitHub, qui pourrait vous aider.

2voto

Bastian Points 6086

Avez-vous ajouté -f (force) au git push ? Sans ce drapeau, vous ne pouvez pas écraser les "anciens" commits.

-f, --force
       Usually, the command refuses to update a remote ref that is not an
       ancestor of the local ref used to overwrite it. This flag disables
       the check. This can cause the remote repository to lose commits;
       use it with care.

Cela peut devenir compliqué si d'autres personnes ont déjà utilisé ces dépôts.

0voto

stefanB Points 27796

Vous pourriez simplement implémenter le correctif en tant que "nouveau correctif", c'est-à-dire supprimer le(s) fichier(s) maintenant, et soumettre le correctif au dépôt.

Elle devrait ensuite être propagée à toutes les branches lorsqu'elles sont synchronisées avec la version dans laquelle vous avez effectué la modification.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X