La situation est la suivante:
Nous avons un projet qui persiste sur Github, et le déployons sur Heroku, qui a son propre mini-Git. Certaines modifications ont été appliquées directement à Heroku (référentiel cloné de Heroku, apporté des modifications et poussé). Pendant ce temps, la branche principale sur Github a également gagné quelques changements.
Maintenant, lorsque je veux pousser le référentiel principal vers Heroku, la poussée échoue car les validations sur Heroku ne sont pas synchronisées avec les validations locales.
Je ne veux pas fusionner avec les changements sur Heroku - je veux juste qu'ils disparaissent.
Existe-t-il un moyen de nettoyer le référentiel git sur Heroku to Push puis mon dépôt local depuis le début?
Je ne veux pas détruire l'application et la recréer à nouveau car elle a des services payants et je ne suis qu'un collaborateur.
Vous pouvez simplement utiliser le -f
flag in git (c'est un flag git standard) pour forcer le Push. Voir la note latérale dans le Dev Center Git doc. Cela écrasera évidemment les modifications que vous avez apportées sur Heroku.
Installez le plugin Heroku Repo et utilisez-le pour réinitialiser le dépôt git distant.
Supprimez d'abord le git repo sur le serveur:
> cd /my-project/
> heroku plugins:install heroku-repo
> heroku repo:reset
Réinitialisez ensuite votre dépôt git local en le supprimant et en le recréant:
> cd /my-project/
> rm -rf .git
> git init
> heroku git:remote -a <appname>
Où <appname>
est le nom de votre application dans Heroku.
Les 2 dépôts (local et distant) devraient maintenant être vides et synchronisés.
Essayez d'aller à https://github.com/heroku/heroku-repo et d'utiliser ce plugin pour nettoyer à distance les choses.
Si votre Heroku Push échoue parce que ce n'est pas un commit à avance rapide et que vous n'essayez pas de faire quoi que ce soit de funky avec votre historique, c'est très simple:
Fusionnez votre autre référentiel dans votre clone Heroku local en utilisant la stratégie récursive avec l'option de stratégie "leur".
git merge -X theirs remotes/Origin/master
Poussez avec le --force
option pour effectuer une validation sans avance rapide dans votre référentiel Heroku en amont.
D'un autre côté, si vous essayez vraiment de purger l'historique, vous avez d'autres options.
Supprimez tout sauf le premier commit de votre historique (le plus simple).
git reset --hard $(git log --pretty=oneline | tail -n1 | cut -d ' ' -f1)
git Push --force
Personnellement, je vous recommande de conserver votre historique et de résoudre le problème d'avance rapide en tant que meilleure pratique, mais vous avez certainement des options si vous souhaitez modifier votre historique de manière agressive. Git est très flexible à cet égard.
Vous pouvez également simplement utiliser le système de gestion des versions de l'application de Heroku. En allant dans "Activité", vous avez l'historique complet du projet: revenir à la première activité et le dépôt doit être complètement nettoyé, revenant à son état lorsque l'application a été initialement créée sur Heroku.