J'ai fait accidentellement 10 commits sur la branche "testing" quand j'ai eu l'intention de les commettre sur la branche "master". Les autres validations sur la branche "testing" sont garbage, donc je ne veux pas le fusionner avec "master". Au lieu de cela, je veux juste rejouer les 10 derniers commits sur le maître.Relire le dernier N commit sur une branche différente
Répondre
- git checkout maître
- git WhatChanged test
- git écrémer _________
?
Rebase devrait le faire.
git rebase -p --onto master testing~10 testing
Cela copiera les dix derniers commits sur les tests de maîtriser et de faire que le nouveau test (l'ancien test sera orphelin). Ensuite, vous pouvez fusionner maître à tester en tant que rapide-avant.
git checkout master
git merge testing
Utilisé la réponse de Ron avant que cela ne soit posté. –
Peut-être vaut-il la peine de noter que cela laisse le test au même point que le maître, laissant les commits "garbage" orphelins. Cela peut ou peut ne pas être une bonne chose. Une autre possibilité serait git checkout master; git reset - tests de résistance; git rebase --onto HEAD @ {1} HEAD ~ 10 –
@CharlesBailey Quel git flog avez-vous l'intention d'atteindre? – Fredrick
Comme dit dans les commentaires, la réponse rebase
-inspired est laissant le 'déchets' commits devenus orphelins.
Il suffit d'utiliser des outils simples:
git checkout master
git merge testing
git checkout testing
git reset --hard HEAD~10 # Go back 10 commits (*1)
git checkout master
(* 1) Vous ne serez "perdre" engage de la branche testing
, puisque vous aurez les commits en master
grâce à la merge
.
Juste un fyi-cherry-pick ne fera qu'un seul commit à la fois, donc vous devrez faire des tests de cerise ~ 9 puis tester ~ 8 puis ... tester. C'est pourquoi je préfère l'approche de rebasage proposée par Talljoe ... bien sûr, le résultat est le même. En fait, si vous faites le rebasage de façon interactive, git utilisera en fait la cueillette des cerises sous le capot. –
@PatNotz 'git cherry-pick' peut actuellement faire plusieurs commit à la fois (par exemple' 'git cherry-pick testing ~ 10..testing'). –
Vous ne devriez jamais utiliser 'cherry-pick'. Lisez [cet article] (http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html) pour plus d'informations. – Tim