2010-09-11 7 views
18

J'ai fait une erreur .... et je ne sais pas comment y remédier.Annuler un git pousser sur github

J'explique le problème.

Je travaillais sur mon projet, et j'ai fait un premier engagement. Dans ce commettras 2 gros fichiers inutiles ont été ajoutés ... Je ne voulais que ces fichiers, donc je l'ai fait une

git rm file 

ensuite à nouveau commited. Et je suis stupide, parce que j'ai poussé à github hehehe :).

Je pense que vous avez trouvé le problème ...

Comment puis-je supprimer définitivement ces fichiers de mes dépôts locaux et GitHub (en particulier github ...)

J'ai trouvé un peu d'aide sur la Internet, mais je ne veux pas casser tout mon dépôt.

Merci

Répondre

29

Si personne d'autre n'a tiré, vous devriez simplement ramener votre branche locale à la façon dont vous le souhaitez (probablement en la réinitialisant à une position précédente, ou en effectuant un rebasage interactif pour supprimer la validation indésirable) à GitHub avec le -f (force) Option:

git push -f <remote-name> <branch-name> 

Si d'autres personnes ont tiré, les conseils habituels DÉPOSÉ: lire la section recovering from upstream rebase de l'homme git-rebase page pour voir ce que vous faites aux autres avant vous faites votre mise à jour forcée.

3

Si vous voulez supprimer (revenir, retirez) commets dernière avec de nouveaux fichiers, je pense que vous devriez faire:

git reset --soft "HEAD^" 

Quoi qu'il en soit, depuis que vous avez déjà poussé à github, vous pouvez » t le supprimer sans re-créer le repo git. Voici comment cela fonctionne, vous pouvez annuler chaque commit, par exemple commettre où vous avez supprimé ces 2 gros fichiers. Puisqu'il s'agit d'un nouveau dépôt et que vous parlez d'un engagement initial, la re-création de repo me semble être la meilleure idée.

+4

"vous ne pouvez pas l'enlever sans re-créer git repo" er, oui vous pouvez. Cela peut déranger les autres s'ils ont tiré, mais vous pouvez le faire. – Cascabel

+2

Je n'avais aucune idée que vous pouvez le retirer du dépôt à distance, merci mon pote. –

+0

Juste 'git reset HEAD ^' est OK; la réinitialisation mixte réinitialise également la zone de transfert mais (contrairement à '--hard') laisse le répertoire de travail intact. De là, 'git add -p' est souvent la prochaine étape. – Kos

Questions connexes