Existe-t-il un moyen de rétablir un commit pour que ma copie locale conserve les modifications apportées à ce commit, mais qu'elles deviennent des modifications non validées de ma copie de travail? L'annulation d'un commit vous ramène au commit précédent. Je veux conserver les modifications apportées mais je les ai commises dans la mauvaise branche.
Cela n'a pas été poussé, seulement commis.
Il y a beaucoup de façons de le faire, par exemple:
au cas où vous auriez pas poussé le commit publiquement pour le moment:
git reset HEAD~1 --soft
Ça y est, vos modifications de commit seront dans votre répertoire de travail, alors que le DERNIER commit sera supprimé de votre branche actuelle. Voir git reset man
Dans le cas où vous avez Push publiquement (sur une branche appelée 'maître'):
git checkout -b MyCommit //save your commit in a separate branch just in case (so you don't have to Dig it from reflog in case you screw up :) )
revenir commettre normalement et Push
git checkout master
git revert a8172f36 #hash of the commit you want to destroy
# this intorduces a new coomit (say, it's hash is 86b48ba) which removes changes, introduced in the coomit in question (but those changes are still visible in the history)
git Push Origin master
maintenant, si vous souhaitez que ces modifications soient apportées en tant que modifications locales dans votre copie de travail ("afin que votre copie locale conserve les modifications apportées dans cette validation"), il vous suffit de rétablir la validation avec l'option -no-commit
:
git revert --no-commit 86b48ba (hash of the revert commit).
J'ai fabriqué un petit exemple: https://github.com/Isantipov/git-revert/commits/master
Si vous avez poussé les modifications, vous pouvez undo
et déplacer les fichiers sur scène sans utiliser d'autre branche.
git show HEAD > patch
git revert HEAD
git apply patch
Il créera un fichier de correctif contenant les dernières modifications de branche. Ensuite, il annule les modifications. Et enfin, appliquez les fichiers de correctif à l’arbre de travail.
Dans mon cas, cela arrive surtout lorsque je modifie la branche et que je réalise plus tard. Et suit des travaux dans la plupart du temps.
git revert commit-hash
git Push
git checkout my-other-branch
git revert revert-commit-hash
git Push
Assurez-vous de sauvegarder vos modifications avant d'exécuter ces commandes dans un dossier séparé
git checkout branch_name
Commander sur votre succursale
fusion de git
Abandonner la fusion
statut git
Vérifier l'état du code après l'abandon de la fusion
git reset --hard Origin/nom_ branchement
ces commandes réinitialiseront vos modifications et aligneront votre code sur le code branch_name (branch).
Pour le cas: "Cela n'a pas été poussé, seulement commis ." - Si vous utilisez IntelliJ (ou un autre IDE JetBrains), vous pouvez le faire ensuite.
Allez à la fenêtre de contrôle de version ( Alt + 9 ) - Onglet "Journal" . Cliquez avec le bouton droit sur une livraison antérieure à votre dernière . .
Terminé.
Cela "désengagera" vos modifications (vous ne les perdez pas) et vous ramènera au point précédant votre dernier commit local.