À toutes fins pratiques, la première chose que vous devriez être inquiet est de CHANGER VOS mots de passe! Il n'est pas clair à partir de votre question, si votre dépôt git est entièrement local ou si vous avez un dépôt distant ailleurs encore; si c'est à distance et non de garanties des autres, vous avez un problème. Si quelqu'un a cloné qui référentiel avant de vous résoudre ce problème, ils vont avoir une copie de votre mot de passe sur leur machine locale, et il n'y a aucun moyen que vous pouvez les forcer à mettre à jour votre "fixe" version avec elle a disparu de l'histoire. La seule chose que vous pouvez faire est de changer votre mot de passe à autre chose partout, vous l'avez déjà utilisé.
Avec cela de la route, voici comment résoudre le problème. GitHub a répondu exactement à la question que comme une FAQ:
git filter-branch --index-filter \
'git update-index --remove filename' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force
Gardez à l'esprit qu'une fois que vous avez poussé ce code à un dépôt distant comme GitHub et d'autres ont cloné que le dépôt distant, vous êtes maintenant dans une situation où vous êtes à la réécriture de l'histoire. Quand d'autres, essayez de tirer vers le bas vos dernières modifications après cela, ils recevront un message indiquant que les changements ne peuvent pas être appliquée parce qu'elle n'est pas un fast-forward.
Pour résoudre ce problème, ils doivent supprimer leur référentiel existant et re-cloner, ou suivez les instructions sous "RÉCUPÉRATION DE l'AMONT REBASE" dans le git-git rebase page de manuel.
Dans l'avenir, si vous avez accidentellement commettre certains changements, avec des informations sensibles, mais vous un avis avant de pousser à un dépôt distant, il y a quelques plus facile de bugs. Si vous le dernier commit est le seul à ajouter les informations sensibles, vous pouvez simplement supprimer les informations sensibles, puis exécutez:
git commit -a --amend
Modifier la précédente s'engager avec les nouvelles modifications que vous avez apportées, y compris la totalité du fichier absorptions fait avec un git rm
. Si les changements sont plus loin dans l'histoire, mais pas encore poussé à un dépôt distant, vous pouvez faire un rebase interactif:
git rebase -i origin/master
Qui ouvre un éditeur de texte avec les commits que vous avez fait depuis votre dernier ancêtre commun avec le dépôt distant. Changement de "ramasser" pour "modifier" sur toutes les lignes représentant un commit avec des informations sensibles, et d'enregistrer et quitter. Git va à pied à travers les changements, et vous laisser à un endroit où vous pouvez:
$EDITOR file-to-fix
git commit -a --amend
git rebase --continue
Pour chaque modification des informations sensibles. Finalement, vous vous retrouverez sur votre branche, vous pouvez sans risque de pousser les nouveaux changements.