(Ce qui suit suppose que votre travail est sur master
.)
En premier lieu, réorganiser vos trois derniers commits afin que bar
est le premier.
git rebase -i HEAD~3
Un éditeur pop avec quelque chose comme ceci:
pick 498e4f4 foo
pick 71547ae bar
pick abf09c6 baz
# Rebase 4d3fe72..abf09c6 onto 4d3fe72
#
# ...
Réorganiser les dans l'éditeur qui apparaît pour que bar
vient en premier.
pick 71547ae bar
pick 498e4f4 foo
pick abf09c6 baz
# Rebase 4d3fe72..abf09c6 onto 4d3fe72
#
# ...
Git tournera pendant quelques secondes et roter une confirmation:
Successfully rebased and updated refs/heads/master.
Maintenant, vous pouvez rouler temporairement revenir à la bar
commettras (HEAD~2
signifie deux commits retour de HEAD
) et dcommit il:
git checkout HEAD~2
git svn dcommit
Si vous êtes paranoïaque comme moi, vous pouvez faire git svn dcommit -n
d'abord être sûr que vous êtes seulement avoir commis ce tu veux.
maintenant revenir en arrière à master
:
git checkout master
Le dernier bit est de rebasage de sorte que master
synchronise avec svn:
git svn rebase
Il me est un peu floue pour expliquer pourquoi cela est nécessaire, mais Je suppose que dcommitting dans un état détaché de la tête a quelque chose à voir avec cela.
Commit foo, bar et baz déjà dans la branche master qui suit le repo svn? – Pradeep
Dans mon cas, non. Mais c'est bon de montrer comment faire les deux façons. – baudtack