web-dev-qa-db-fra.com

Échec du rebase Git

J'essaie de rebaser le travail d'un collègue.

Tout d'abord, je reçois une tonne de conflits où <<<<< coutures de tête pour contenir le nouveau code.

Puis après un certain temps, j'obtiens l'erreur suivante:

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref     'refs/heads/dev_504': ref refs/heads/dev_504 is at
 XXXXXXX 
 but expected     XXXXXXXX
Could not move back to refs/heads/dev_504

Ensuite, si j'essaye de continuer, j'obtiens l'erreur suivante:

fatal: cannot resume: .git/rebase-apply/final-commit does not exist.

Comment puis-je résoudre ce problème afin que le rebase ne donne pas d'erreur?

27
Bunker
  • Tu peux courir git rebase --abort pour annuler complètement le rebase. Git vous ramènera à l'état de votre branche tel qu'il était avant l'appel de git rebase.

  • Tu peux courir git rebase --skip pour ignorer complètement la validation. Cela signifie qu'aucune des modifications introduites par le commit problématique ne sera incluse. Il est très rare que vous choisissiez cette option.

  • Vous pouvez résoudre le conflit.

  • A défaut, vous devez recréer votre branche ou vous pouvez supprimer le répertoire .git/rebase-merge, qui contient l'état de rebase.

12
Slim KTARI

Apparemment, la branche sur laquelle vous souhaitez rebaser a également été rebasée entre le moment où vous vous êtes éloigné, peut-être le nettoyage de l'historique ou le rebasage sur une autre branche. Si oui, vous devez:

  • abandon, désordre actuel: git rebase --abort
  • être à jour: git fetch
  • maintenant la partie intéressante:

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

par exemple. vous avez créé votre branche master (checkout d'origine/master), une nouvelle branche test_branch (que vous voulez maintenant mettre à jour avec Origin/master actuel)

git rebase --onto master test_branch~ test_branch

Ce que cela fait est en termes simples, cela prend la validation initiale du parent de votre branche, trouve sa contrepartie dans le maître actuel et rebase en fonction de cela.

6
Alim Özdemir