git - ramas - ¿Cómo puedo sobrescribir, no fusionar, una rama remota en otra rama?
git pull (4)
Le sugiero que simplemente cambie el nombre en caso de que cambie de opinión.
git branch -m staging staging_oops
git checkout beta
git branch staging
Si realmente no puedes soportar tener esa rama extra alrededor:
git branch -D staging_oops
Tengo dos ramas. La puesta en escena y la beta. La puesta en escena tiene un código (incluidos los archivos), que no quiero en absoluto. ¿Cómo puedo hacer que Beta sobrescriba completamente el Staging, de modo que ninguno de esos archivos o códigos se fusionen de Staging en Beta?
Veo que algunas personas recomiendan hacer esto:
git checkout staging
git merge -s ours beta
Pero no creo que los archivos preexistentes sean un "conflicto de código" y, por lo tanto, no se eliminen. ¿Me equivoco? Si estoy en lo cierto, ¿cómo lograría esto?
Puede simplemente eliminar la staging
y volver a crearlo en función de la beta
:
git branch -D staging
git checkout beta
git branch staging
Si la historia de la puesta en escena no va a ser un problema, simplemente puede hacer esto.
git checkout staging
git reset --hard beta
Solo recuerde que el historial de puesta en escena desaparecerá después del comando anterior y la puesta en escena tendrá el trabajo de su rama beta .
Si no te importa la antigua historia de la staging
en staging
, puedes recrearla:
git checkout beta
git branch -f staging
Si te preocupas por la antigua historia de la staging
en staging
, entonces las cosas se ponen más divertidas:
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.