2010-06-24 5 views
5
$ git checkout to-branch 
$ git merge from-branch 
$ git status | grep unmerged 
# file1 unmerged 
# file2 unmerged 
# file3 unmerged 
$ vi file1 
$ git add . 

Eek! Je ne voulais pas "ajouter git". Je voulais dire "git add file1"!Comment annuler "git add." lors d'une fusion?

Maintenant, je ne peux pas obtenir un comportement comme:

$ git show :1:file2 

J'ai essayé:

$ git reset file2 

et

$ git checkout -m file2 

mais aucune de ces déclarations FICHIER2 à un état "unmerged" . Le statut git ne le montre pas comme non fusionné et je n'ai pas accès à "git show: 1: file2", etc. Je veux remettre le fichier à l'état non fusionné.

Comment puis-je revenir à l'état dans lequel j'étais avant "git add". sans perdre mes modifications à file1?

Répondre

10

(non testé) Avez-vous essayé

git checkout -m /path/to/file2 
git checkout -m /path/to/file3 

?

Lors de la vérification des chemins de l'index, cette option vous permet de recréer la fusion en conflit dans les chemins spécifiés

Si cela ne fonctionne pas, vous pourriez avoir d'autres réponses à la question SO " How do I get my git merge conflicts back after merging incorrectly? "

+0

Merci. Cela vous donne le fichier avec des conflits de fusion mais il ne met pas à jour tout ce que git utilise pour suivre les conflits de fusion afin que le statut git n'affiche pas le fichier comme non fusionné et git show: 1: file2, etc. travail. Jetez un oeil à l'autre question. –

+0

+1, Cool - Je ne savais pas à propos de cette fonction obscure. Juste essayé un test avec cela et il semble fonctionner comme annoncé. –

1

Au cas où quelqu'un est encore avoir ce problème (comme je l'ai fait tout à l'heure), vous pouvez (maintenant) faire:

git update-index --unresolve file2 file3 
Questions connexes