Comment créer un patch sans commit dans Git
j'ai fait un peu de recherche en ligne. Je sais que vous pouvez utiliser format-patch après validation, mais ma situation est un peu différente.
je veux créer un patch, similaire à "dpk" dans SVN, donc je peux l'Envoyer pour la révision du code, mais je ne veux pas encore le propager.
Comment puis-je y arriver avec Git?
5 réponses
commettre en Git est une opération bon marché et entièrement locale, donc il n'y a aucune raison d'éviter de commettre aussi longtemps que vous ne le poussez nulle part.
il suffit de créer une nouvelle branche locale et d'y effectuer vos modifications. Vous pouvez toujours supprimer la branche plus tard si vous ne la voulez plus, ou vous pouvez garder la branche et l'utiliser pour travailler sur ce que vous faites, puis la fusionner (ou la rebaser) dans la branche principale quand elle est prête. C'est un bon flux de travail à utiliser lorsque vous travaillez avec des Git.
$ git checkout -b feature-foo # create and switch to new branch feature-foo
$ git commit
# do whatever you need to do
$ git checkout master # switch back to the master branch
$ git merge feature-foo # merge your change into master (optional)
$ git branch -d feature-foo # delete the branch
alors que d'autres gars avaient déjà donné une réponse conforme à la convention git, la question de L'OP, "créer un patch sans commit", peut aussi être résolue de cette façon:
git diff > my_patch.txt
plus Tard, vous pouvez appliquer ce correctif, également sans commettre, par:
git apply my_patch.txt
mais si vous travaillez juste localement, a git checkout another_branch -m
est assez bon pour apporter toutes vos modifications actuelles uncommit à cette another_branch, sans même patch et appliquer.
général l'étape de générer patch sans s'engager, au dernier
valider vos modifications locales à l'aide de
git commit -a -m "specific message"
Note: Ne poussez pas ce commit.
générer patch
git format-patch -s -n -1 HEAD
il générera 0001 -.patch
revenir de validation
git reset --soft HEAD~1
pour supprimer commettre, mais gardez votre travail
git reset --hard HEAD~1
pour supprimer commettre avec votre travail
Vous pouvez aussi cacher et puis faire:
git stash show -p
un engagement dans un repo local dans git n'est pas"contraignant". Vous pouvez propager vos modifications, créer votre patch et ensuite faire une réinitialisation douce de votre branche à la propagation précédente et c'est comme si votre propagation n'avait jamais eu lieu.
cela étant dit, il n'y a vraiment aucune raison que vous ayez à réinitialiser votre branche après avoir créé le patch. Vous pouvez laisser le commit dans le repo et éviter de le pousser jusqu'à ce que la révision du code soit terminée. Si vous devez revenir en arrière et faire des changements à la propagation initiale vous avez les options à ce point.
et si vous créez une branche pour le commit comme hammar le suggère, cela rend encore plus facile de revenir en arrière et de faire des changements plus tard sans avoir à faire de rebasage ennuyeux et tel dans la branche principale avant de pousser.