SourceTree: haz que el nuevo maestro

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:

  1. Desde su twig feature-01 : git merge --strategy=ours master
  2. Luego, desde tu twig principal: 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:

fusionar opciones


Como se menciona en este artículo , necesitaría definir una acción personalizada:

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.