J'ai deux branches. Mise en scène et bêta. Staging contient du code (y compris des fichiers) que je ne souhaite pas du tout. Comment puis-je faire en sorte que la bêta écrase complètement Staging, afin qu'aucun de ces fichiers ou code ne soit fusionné de Staging dans Beta.
Je vois que certaines personnes recommandent de faire ceci:
git checkout staging
git merge -s ours beta
Mais je ne crois pas que les fichiers préexistants constitueraient un "conflit de code" et ne seraient donc pas supprimés. Ai-je tort? Si j'ai raison, comment pourrais-je accomplir cela?
Vous pouvez simplement supprimer staging
et le recréer en fonction de beta
:
git branch -D staging
git checkout beta
git branch staging
Si vous ne vous souciez pas de l'ancienne histoire de staging
, vous pouvez simplement la recréer:
git checkout beta
git branch -f staging
Si vous vous souciez de la vieille histoire de staging
, les choses deviennent plus amusantes:
git checkout staging # First, merge beta into staging so we have
git merge -s theirs beta # a merge commit to work with.
git checkout beta # Then, flip back to beta's version of the files
git reset --soft staging # Then we go back to the merge commit SHA, but keep
# the actual files and index as they were in beta
git commit --amend # Finally, update the merge commit to match the
# files and index as they were in beta.
Je vous suggère de le renommer au cas où vous changeriez d'avis.
git branch -m staging staging_oops
git checkout beta
git branch staging
Si vous ne pouvez vraiment pas supporter cette branche supplémentaire:
git branch -D staging_oops
Si l'historique de la mise en scène ne pose pas de problème, vous pouvez simplement le faire.
git checkout staging
git reset --hard beta
N'oubliez pas que l'historique de la mise en scène aura disparu après la commande ci-dessus et que stagingaura le travail de votre branchebeta.