web-dev-qa-db-fra.com

Comment déplacez-vous un commit dans la zone de transit dans git?

Si vous souhaitez déplacer un commit dans la zone intermédiaire, c’est-à-dire l’engager et déplacer tous les changements qui y figuraient dans la zone intermédiaire (en réalité, placer la branche dans l’état où elle se trouvait avant le commit) comment faites-vous? Ou est-ce quelque chose que vous ne pouvez pas faire?

Le plus proche que je sache faire est de copier tous les fichiers qui ont été modifiés dans le commit vers un autre emplacement, de réinitialiser la branche sur le commit avant le commit que vous essayez de déplacer dans la zone intermédiaire, de déplacer tous les fichiers. copiez les fichiers dans le référentiel, puis ajoutez-les à la zone de transfert. Cela fonctionne, mais ce n’est pas vraiment une solution intéressante. Ce que j'aimerais pouvoir faire, c'est simplement annuler le commit et transférer son changement dans la zone intermédiaire. Cela peut-il être fait? Et si oui, comment?

116
Jonathan M Davis
git reset --soft HEAD^

Cela réinitialisera votre index à HEAD^ (le commit précédent), mais laissez vos modifications dans la zone intermédiaire.

Il y a quelques diagrammes pratiques dans le git-reset docs

Si vous êtes sous Windows, vous devrez peut-être utiliser ce format:

git reset --soft HEAD~1
207
Abizern

Une manière simple

  1. Fichiers validés dans la zone de stockage intermédiaire

    git reset --soft HEAD^1

  2. Staging to UnSatge : (utilisez "git reset HEAD ..." pour décompresser)

    git reset HEAD git commands.txt or git reset HEAD *ds.txt

ici, * -> tous les fichiers se terminent par ds.txt en unstage.

Reportez-vous à la photo ci-dessous pour plus de clarté:

enter image description here