0
votes

Git - retourner dans une commission antérieure et modifier

J'ai un projet où j'ai la séquence de validation suivante: xxx

pour des raisons de développement, ce que je dois faire est ce qui suit: 1. Allez à commettre 5. 2. Faites de petits changements. 3. Publiez les modifications apportées à la production. 4. Ajoutez les modifications apportées aux commentations.

Le problème vient lorsque je vois que le dossier que j'ai changé, il a également changé en commit 6.

Que puis-je faire pour Changez le fichier dans COMMIT 5 et fusionner les modifications avec COMMIS 6 pour garder une bonne trace de tout?

Merci !!

git

6 commentaires

Rechercher GIT Soft Reset


Puisque vous avez déjà poussé tous les commits (et cela ressemble à ce qu'ils sont également entrés dans la production), Vous ne devriez pas revenir en arrière et réparer le commit. Au lieu de cela, possédez l'erreur et le réparer dans un nouveau commit


Il convient également de noter: vous ne pouvez pas changer de commit existant. Vous pouvez revenir à commettre 4 ( 5232f4b ), faire une nouvelle et améliorée variante de commit 5 (le commit original sera toujours 1d51716 et Vous aurez une nouvelle nouvelle identification de hachage laid maintenant), puis une copie de commit 6 à une nouvelle version améliorée qui ne sera pas 800cedc - 800cedc sera toujours quoi Il est, en permanence lié à 1d51716 . Ensuite, vous pouvez demander à votre git et tous les autres git (tels que celui de Origine ) pour vous empêcher d'utiliser 800cedc et de passer à votre dernier commit est, mais il n'y a aucune garantie Ils vont faire ça.


@torek Peut-être que je me suis tellement expliqué. Je n'ai pas l'intention de changer de commit. Dans ce cas, j'ai trouvé un bug qui doit être corrigé dans le BIGLE 5, car le COMMIT 6 n'est pas encore en production.


C'est surtout une prudence: si vous pense de "Fixer un bogue" comme " changer un commit" Vous avez dirigé un mauvais chemin qui pourrait vous trébucher un jour. Si vous le pensez comme remplaçant le commit (avec une nouvelle et améliorée), vous êtes dirigé sur un bon chemin, car c'est ce que Git fait vraiment sous le capot et vous ne serez pas surpris constater que l'engagement initial est toujours utilisé par d'autres. Donc, les mots que vous utilisez, même dans votre propre tête, pensez à ces choses, ce qui compte.


Bien sûr, dans ce cas, peut-être que toute la question n'était qu'une question de pronoms: vous avez dit «Retournez-vous à un commit précédent et modifiez IT ». Le mot il ici semble faire référence à la commettre . Si, par it , vous vouliez dire les fichiers que j'ai extraits de celui-ci, de manière à faire un nouveau supplément de remplacement ... eh bien, c'est bien (si grammatical). :-)


3 Réponses :


0
votes

Essayez: xxx

puis, faites votre changement.

Pas sûr, veuillez veiller à vérifier. < P> BTW : Je pense que le meilleur moyen est de faire un nouveau commit: -)


0 commentaires

1
votes

Vous pouvez faire des étapes ci-dessous.

  1. Créer une nouvelle branche hors de commit5. XXX

  2. Vous ne pouvez pas faire Cherrypick pour un fichier individuel. Vous ne pouvez faire que Cherrypick au niveau de validation. Faites une copie locale du fichier spécifique de COMTT5 (dites file_a), que vous souhaitez fusionner de STIGLE6. Après cela, cumulez le fichier spécifique de STIG6.

    Checkout GIT Chemin / à / File_a

  3. Maintenant, faites manuellement la fusion du fichier de commit5 (copie locale) avec un fichier de commit6 (dans la branche GIT)

  4. Après avoir fait les changements, mettez-les et appuyez sur à distance. XXX


0 commentaires

4
votes

Comme @nilswerner, le commentaire dit, ce n'est pas une bonne idée de réécrire une histoire publiée. Mais si vous voulez vraiment, xxx

après la force-poussée, dites à d'autres contributeurs que vous avez réécrit maître et ils doivent forcer à mettre à jour leur local Master et appliquer leurs engagements induits sur leur nouveau maître local , qui est une tâche assez gênante.


1 commentaires

Merci!! Va essayer cela.