Estoy usando GIT y Sourcetree como gui.
Tengo dos twigs: maestra y característica 01. Ahora quiero sobrescribir todo en master con lo que es en feature-01.
Tuve que hacer esto después de tener que retroceder algunos cambios en el maestro. sin embargo, networkinguje los cambios en la nueva twig, conseguí que la twig sea 100% donde quiero que esté el maestro, pero ahora cuando fusiono los dos, el maestro mantiene todos los cambios revertidos que debería haber descartado como en la twig: /
Puedes hacer lo siguiente:
feature-01
: git merge --strategy=ours master
git merge feature-01
El primer command creará un nuevo compromiso (fusión) de las dos twigs, pero ignorará todo lo que está en el master
utilizando la opción --strategy=ours
. Entonces, el segundo command "avanzará" master
a este nuevo compromiso.
En este punto, tendrá los contenidos de sus feature
en el master
. Con esta opción, no necesitará "reiniciar" el control remoto ni nada similar; simplemente pondrá en master
todo el trabajo que hiciste en la feature
.
¿Es esto posible en SourceTree?
No, no es directamente posible, porque una merge --ours
no es compatible en Sourcetree.
(Lo he probado con la última versión 2.1.11.0, con Git 2.14.1 incorporado, septiembre de 2017).
Ver SRCTREEWIN-1237
(… desde 2013!)
Necesito usar nuestra estrategia, es decir, fusionar myBranch en master, descartando cualquier cambio en myBranch
git merge -s ours myBranch
Esto aún no está disponible cuando se fusionan dos twigs:
Como se menciona en este artículo , necesitaría definir una acción personalizada:
Eso te permitirá emular la merge --ours
paso de la siguiente secuencia
git checkout feature-01 git merge --strategy=ours master git checkout master git merge feature-01
El checkout
y la merge
simple son compatibles en SourceTree. La acción personalizada le permite hacer la merge --ours
paso.
Y luego, el contenido master
será reemplazado por el contenido de feature-01
.
Enteramente de SourceTree solo.
Para mercurial, después de " Reemplazar el contenido de una hg branch
", necesitaría crear una acción personalizada (como se ilustra arriba), para el command hg branch -f
(la opción -f
no está disponible en el dialog de branch
normal)
Puede eliminar la twig maestra (es solo un nombre labeldo como una confirmación) y luego volver a crearla donde la desee:
git branch -d master // this will delete the branch git checkout feature-01 git branch master // this will recreate it where you are checked out.
Tenga cuidado si ha compartido este repository, tiene que limpiar el control remoto, Y probablemente deba hablar con quien use el repository / esté a cargo del repository, porque va a volver a escribir el historial.