Supprimer la dernière propagation dans bitbucket

j'ai fait une erreur et je ne sais pas comment supprimer ma dernière poussée dans le dépôt. Je tire les dernières mises à jour de l'application mais il a des conflits et je le pousse au dépôt.

Comment supprimer mon dernier commit? Ou comment résoudre le problème?

90
demandé sur catherine 2013-02-12 20:07:52

6 réponses

en premier lieu, si vous travaillez avec d'autres personnes sur le même dépôt de code, vous ne devrait pas supprimer un commit car lorsque vous forcez la mise à jour sur le dépôt il laissera les dépôts locaux de vos collaborateurs dans un État illégal (par exemple, s'ils ont fait commits après celui que vous avez supprimé, ces commits seront invalides car ils étaient basés sur une commit maintenant inexistante).

a dit que, ce que vous pouvez faire est revenir le commettre. Cette procédure est effectuée différemment (différentes commandes) selon le CVS que vous utilisez:

On git :

git revert <commit>

On mercurial :

hg backout <REV>

EDIT: L'opération revert crée une nouvelle commit qui fait le contraire de la commit reverted (par exemple si la commit originale a ajouté une ligne, la commit revert supprime cette ligne), supprimant effectivement les modifications de la propagation indésirable sans réécrire l'historique du dépôt.

84
répondu asermax 2018-02-22 10:03:29

si vous êtes pas travailler avec d'autres (ou êtes heureux de leur causer des ennuis significatifs) , alors il est possible de supprimer les commits des branches bitbucket.

si vous essayez de changer une branche non-maître:

git reset HEAD^               # remove the last commit from the branch history
git push origin :branch_name  # delete the branch from bitbucket
git push origin branch_name   # push the branch back up again, without the last commit

si vous essayez de changer la branche principale

dans le git en général, la branche principale n'est pas spéciale - c'est juste une convention. Cependant, bitbucket et github et des sites similaires exigent généralement qu'il y ait une branche principale (probablement parce que c'est plus facile que d'écrire plus de code pour gérer l'événement qu'un dépôt n'a pas de branches - pas sûr). Vous devez donc créer une nouvelle branche, et en faire la branche principale:

# on master:
git checkout -b master_temp  
git reset HEAD^              # undo the bad commit on master_temp
git push origin master_temp  # push the new master to Bitbucket

sur Bitbucket, allez dans les paramètres du dépôt, et changez la "branche principale" en master_temp (sur Github, changez la "branche par défaut").

git push origin :master     # delete the original master branch from Bitbucket
git checkout master
git reset master_temp       # reset master to master_temp (removing the bad commit)
git push origin master      # re-upload master to bitbucket

maintenant, allez à Bitbucket, et vous devriez voir l'histoire que vous voulez. Vous pouvez maintenant aller à la page Paramètres et changer la branche principale de nouveau à master .

ce processus fonctionnera également avec tout autre changement de l'histoire (par exemple git filter-branch ). Vous devez juste vous assurer de réinitialiser pour les propagations appropriées, avant que la nouvelle histoire se sépare de l'ancienne.

modifier : apparemment, vous n'avez pas besoin d'aller à tout cela hassle sur github, comme vous pouvez force-pousser une branche de réinitialisation .

Traiter avec ennuyé collaborateurs

la prochaine fois que quelqu'un essaie de tirer de votre dépôt, (s'ils ont déjà tiré la mauvaise propagation), la traction échouera. Ils devront se réinitialiser manuellement à un commit avant l'historique modifié, puis tirer à nouveau.

git reset HEAD^
git pull

S'ils ont tiré la mauvaise Commission, et commis sur en haut de celui-ci , alors ils devront réinitialiser, et puis git cherry-pick le bon commits qu'ils veulent créer, en recréant effectivement toute la branche sans le mauvais commit.

S'ils n'ont jamais fait le mauvais commit, alors tout ce processus ne les affectera pas, et ils peuvent tirer comme d'habitude.

85
répondu naught101 2017-05-23 12:03:02

vous pouvez réinitialiser à HEAD^ puis forcer la poussée.

git reset HEAD^
git push -u origin master --force

il supprimera votre dernière commit et réfléchira sur bitbucket comme commit supprimé mais restera quand même sur leur serveur.

37
répondu Shubanker 2015-08-09 18:10:53

j'ai eu des problèmes avec git revert dans le passé (principalement parce que je ne suis pas tout à fait certain de la façon dont il fonctionne.) J'ai eu du mal à revenir à cause de problèmes de fusion..

ma solution simple est celle-ci.

Étape 1.

 git clone <your repos URL> .

votre projet dans un autre dossier, puis:

Étape 2.

git reset --hard <the commit you wanna go to>

alors Étape 3.

dans votre dernier (et principal) projet dir (le un qui a la dernière propagation problématique) coller les fichiers de l'étape 2

Étape 4.

git commit -m "Fixing the previous messy commit" 

Étape 5.

Profiter

3
répondu SudoPlz 2013-05-24 23:15:02

une fois les modifications engagées, il ne sera pas possible de les supprimer. parce que la nature fondamentale de commit n'est pas de supprimer.

Chose que vous pouvez faire (facile et sûr de la méthode),

Rebase Interactif:

1) git rebase -i HEAD~2 #montrera votre récente 2 s'engage

2) Votre commit apparaîtra comme, Recent apparaîtra en bas de la page LILO(last in Last Out)

enter image description here

supprimer entièrement la dernière ligne de propagation

3) l'enregistrer en ctrl+X ou ESC:wq

maintenant votre branche sera mise à jour sans votre dernier commit..

0
répondu Mohideen ibn Mohammed 2017-10-24 07:50:43

à présent, cloud bitbucket (Je ne sais pas quelle version) permet de revenir sur une propagation à partir du système de fichiers comme suit (Je ne vois pas comment revenir de L'interface Bitbucket dans le navigateur Chrome).

- sauvegardez l'ensemble de votre répertoire pour sécuriser les changements que vous avez commis par inadvertance."

- sélectionner répertoire vérifié

- bouton droit de la souris: menu tortue git

-explorateur (l'option de menu "version" seulement annule la uncommited changements)

- appuyez sur le bouton de tête

- sélectionnez la ligne supérieure (la dernière propagation)

- bouton droit de la souris: revenir modifier par cette commit

- après avoir défait les changements sur le système de fichiers, appuyez sur commit

- cette mise à jour Git avec un message 'Revert (votre message précédent). Cela revient commettre soi-and-so'

- sélectionner ' commit et push".

-2
répondu smriti 2018-05-07 11:36:42