Comment git-svn savoir quelle branche de dcommit pour?
Mon repo SVN est, et je fais tout développement avec git. Nous disposons d'un modèle de mise en page, et j'ai initialisé mon local repo avec git svn init -s <url to repo>
Voici mon flux de travail pour travailler avec des branches:
# creates a new branch remotely
git svn branch new-branch-name
# switches to a branch or trunk locally
git reset --hard name-of-branch
git reset --hard trunk
# merge changes from trunk into a branch
git reset —hard name-of-branch
git merge trunk
git svn dcommit
Cette dernière commande ci-dessus va valider les modifications sur le nom de la branche de la branche. Ma question est, comment git le savoir? Lorsque je fais un git reset --hard foo
, qu'advient-il exactement?
Cela pourrait bien se réduire à une question générale sur git. Chaque fois que j'essaie à la recherche d'une réponse-je obtenir confus au sujet de si svn intégration est un cas spécial ou pas.
Vous devez vous connecter pour publier un commentaire.
git-svn
va chercher la validation de l'arbre pour ancêtre s'engage qui correspondent à des actifs branches du SVN (lerefs/remotes/...
branches qui correspondent aux branches SVN). Il sera alors dcommit à ceux-ci.Noter que vous ne devriez pas fusionner, puis dcommit -- SVN et Git de ramification modèle ne correspondent pas, et ce genre de chose peut fubar votre SVN de l'histoire. Vous devriez plutôt
git rebase trunk
lorsque vous êtes sur la branche. (Sinon,git svn rebase
.)Aussi, soyez conscient que la branche que vous découvrez avant cela doit être une succursale locale. Si elle n'est pas, vous pouvez en créer un avec
git checkout -b local-branch-to-create remote-branch
. Puisgit rebase trunk
.Si vous voulez écraser tous les commits qui ont été relocalisée en un seul, puis le faire après le rebase:
git reset --soft trunk && git commit
.Une fois que vous êtes heureux avec les changements que vivent maintenant sur le haut du tronc, juste
git svn dcommit
à les pousser vers le serveur SVN.--commit-url
doit être utilisé uniquement pour passer de transport, et "l'Utilisation de cette option pour d'autres fins (ne demandez pas) est très fortement déconseillée."git rebase my-branch
etgit svn rebase my-branch
de ne pas apporter dans le code de ma branche.git merge my-branch
n'ont les changements souhaités au niveau local, mais alorsgit svn dcommit
essaie de valider mon-branche à distance, au lieu de tronc.git checkout my-branch; git rebase trunk; git svn dcommit;
my-branch
local rubrique agence où vous avez fait votre développement, ettrunk
être le nom de la télécommande svn trunk réf.git checkout my-branch; git rebase trunk; git reset --soft trunk; git commit; git dcommit;
. Et ce processus est décrit en morceaux dans le git-svn page de manuel. (Que vous avez à l'assembler vous-même à partir de différentes sections près de la fin de la page du manuel.)N'est-il pas aussi simple que de créer une branche locale et de suivi à distance branche svn?
Lorsque vous faites un
git svn init --stdlayout url-of-svn-repo
, git apporte tout le repo svn, il compresse afin qu'il soit utilisable avec git.Après c'est juste une question de fait, de faire quelque chose comme:
Si vous avez une succursale locale de suivi à distance de la branche,
git svn dcommit
pousse uniquement pour le suivi à distance de la branche.git svn dcommit -n
toujours dit qu'il va commettre, du tronc, au lieu de la direction que je veuxFaçon Simple si vous souhaitez dcommit git master en svn trunk, essayez les commandes suivantes:
De la même quand, dans l'autre branche (par exemple 6.x)