Votre question n'est pas complètement claire pour moi. Je pense que vous voulez que la nouvelle branche contienne des séries de validations qui soient "équivalentes" à celles du dev mais ne contiennent pas de modifications inutiles des espaces.
La manière la plus simple de le faire est avec git rebase --interactive
. Cela vous permet de modifier une série de validations manuellement. Vous pouvez obtenir le hachage du premier commit ("root") avec git rev-list HEAD | tail -n 1
. Si vous voulez également éditer le premier commit, c'est plus difficile mais il y a une réponse SO pour cela.
git checkout dev
git checkout -b magic
git rebase --interactive $(git rev-list HEAD | tail -n 1)
Cela fait apparaître un éditeur sur la liste des commits dans l'ordre chronologique de l'avant. Vous modifiez choisissez à éditez sur les commissions que vous souhaitez modifier. git va alors s'arrêter avant de traiter chacun de ces commits, vous permettant de le modifier avec git commit --amend
puis de poursuivre la rebase avec git rebase --continue
. Vous pouvez bien sûr exécuter un script pour nettoyer les fichiers plutôt que de les éditer manuellement. Si vous voulez faire cela en fonction des différences par rapport au commit précédent, vous devrez utiliser quelque chose comme git cat-file blob HEAD^:filename
pour récupérer la révision précédente, ou utiliser git diff HEAD^ filename
.
Si vous souhaitez automatiser l'ensemble du processus, vous pouvez utiliser git filter-branch --tree-filter script
. Regardez la page de manuel pour git-filter-branch pour plus de détails.
Si vous souhaitez empêcher les futures validations de contenir des erreurs d'espaces, vous pouvez configurer un pré-validationhook pour les interdire.
Une fois que vous êtes satisfait de la nouvelle branche magique vous pouvez l'utiliser pour remplacer dev:
git branch -m dev dev-old
git branch -m magic dev
Toutefois, notez que cela pourrait causer des problèmes pour les personnes qui ont déjà une copie de dev dans leurs propres repos. Il serait alors préférable de faire une fusion à la place.
Avez-vous besoin de conserver l'historique des modifications en cours? – leedm777