Récupérer depuis la twig git où plusieurs réinitialisations ont été effectuées et poussées vers l'origine (c.-à-d. Atlassian Stash)

En dépit de tous nos efforts, nous nous sums lancés dans le pésortingn avec une twig caractéristique dans notre repository Git. Le résultat final est qu'un git diff develop..feature-branch montre un diff complètement inattendu.

Par exemple, un file ajouté dans develop apparaît comme une suppression dans le diff. Beaucoup d'autres files montrent des problèmes similaires, certains manquants, certains ajoutés, beaucoup de nombreux changements inattendus. Certains files qui auraient dû être develop n'apparaissent même pas dans le diff. Nous avons d'abord remarqué le problème dans Atlassian Stash lorsque nous sums passés en revue le code via une request Pull. La fusion en attente est complètement et complètement incorrecte et ne peut pas être résolue par la résolution de conflit standard pendant la fusion.

Nous avons essayé de déchiffrer ce qui a causé cela et nous croyons que le problème provient d'un développeur effectuant plusieurs réinitialisations sur des commits dans la twig de fonctionnalité qui étaient déjà poussés à l'origine. Cela consistait à "annuler" certains changements suggérés lors d'un examen de code de request de tirage. Plus précisément, nous croyons que c'est le calendar des events.

  1. Branche de fonctionnalité créée à partir de développer
  2. Travail effectué sur la twig de fonctionnalité
  3. Tirer la requête générée dans Atlassian Stash (les relations publiques semblent correctes, mais quelques modifications mineures sont suggérées)
  4. Le développeur utilise une réinitialisation pour annuler certaines modifications et les reporte à l'origine
  5. Pendant ce time, des conflits mineurs ont été constatés entre la twig de développement
  6. Mises à jour des développeurs fonctionnalité twig de développer pour réconcilier les conflits et pousse à l'origine
  7. Pull request (diff) montre diff inattendu, radicalement différent de celui d'avant. Les files qui doivent être validés sont manquants et vice versa
  8. Je tente d'annuler (annuler la réinitialisation) la "mauvaise" fusion et l'essayer à nouveau. Cependant le PR / diff montre les mêmes changements incorrects pour la fusion en attente
  9. J'apprends alors que le développeur utilisé réinitialiser quelque part avant la première fusion de développer.

Donc, j'ai trois questions.

  1. Comment devons-nous "récupérer" une twig de caractéristique corrigée afin que nous puissions merge nos changements pour développer correctement? Ma pensée est de créer une nouvelle twig de fonctionnalité "bonne" à partir d'une validation dans notre twig de fonctionnalité qui est connue pour se produire avant les réinitialisations. Je peux ensuite choisir les commits que nous voulons de la twig "mauvaise" dans le "bon" pour le recréer. Enfin, je peux merge la twig "bonne" fonctionnalité en développer et supprimer la "mauvaise".

  2. Si je devais merge la twig "mauvaise" fonctionnalité en développement, en dehors de l'état incorrect des files, il y aurait une autre "corruption" fuite dans la twig de développement. En d'autres termes, est-ce que la twig "mauvaise" polluée polluerait davantage la twig de développement et tout ce qui en aval? Je ne prévois pas de le faire bien sûr, mais je veux comprendre les ramifications.

  3. Les réinitialisations telles que je les ai décrites provoquent-elles les problèmes que je vois ou est-ce que cela est peut-être lié à quelque chose d'autre?

Solutions Collecting From Web of "Récupérer depuis la twig git où plusieurs réinitialisations ont été effectuées et poussées vers l'origine (c.-à-d. Atlassian Stash)"

La "réinitialisation" du développeur n'a probablement pas affecté l'origine à less qu'il n'ait fait une "poussée de force" vers l'origine. D'après mon expérience, des choses comme celles-ci sont dues à une mauvaise fusion ou à un process de résolution de conflit (par exemple, je soupçonne que quelque chose à l'étape 6 ci-dessus est le coupable). Les instincts sont corrects; votre meilleur pari est de créer une nouvelle twig avant la mauvaise fusion (par exemple "feature-branch2") et de rejeter la twig d'origine (puisqu'il est difficile d'annuler les fusions ou tout autre changement qui a déjà été poussé) et réessayez la fusion ça a mal tourné.

Je ne suis pas sûr qu'un "return" est vraiment ce que vous voulez faire pour annuler la mauvaise fusion. Ma compréhension est que "inverse" inverse-applique un patch d'un seul commit, et en essayant d'inverser-appliquer une fusion semble collante que les fusions sont 2 diffs dans 1 commit (Je n'ai pas une tonne d'expérience avec "revenir" si peut-être que cela peut être fait, je ne suis pas sûr). La façon la plus sûre et la plus fiable de résoudre ce problème serait de créer une nouvelle twig et d'arrêter d'utiliser celle qui a la mauvaise fusion.