web-dev-qa-db-fra.com

Comment puis-je écraser et non fusionner une branche distante dans une autre branche?

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?

30
Trip

Vous pouvez simplement supprimer staging et le recréer en fonction de beta:

git branch -D staging
git checkout beta
git branch staging
29
Daniel Hilgarth

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.
23
Amber

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
8
Shawn Balestracci

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.

0
Amit Kushwaha