Git se fusiona el suyo: ¿simplemente?

He revisado las diversas preguntas sobre esto. El primero proporciona una gran pregunta y respuesta (¿relevante ?, no estoy seguro) y el segundo proporciona una respuesta incorrecta como mejor respuesta.

Tengo una twig llamada great-use-this . Tengo otra twig llamada master . Quiero combinar great-use-this en master y evitar conflictos de fusión automática.

¿Cuál es la forma más simple y fácil de hacer esto?

Nota: De hecho, me he dado count (usando una tercera twig y la ours , pero de todos modos sería bueno tenerlo en SO.

Sí, crear una tercera twig y hacer una merge -s ours es una solución.

Pero encontrará aquí la "estrategia de fusión" "no publicitémos ninguno" de ellos aquí .

Entre replace su trabajo con otro trabajo de sucursal, o simplemente deshacerse del trabajo actual y replacelo por completo con el otro, Junio ​​C. Hamano (principal mantenedor de Git ) prefiere el segundo enfoque:

Creo que " -s theirs " es aún peor. Es cómo descartarías lo que hiciste (quizás porque el otro lado tiene una solución mucho mejor que tu hack), pero eso se puede hacer mucho más fácil y limpiamente con:

 $ git reset --hard origin/master 

Algunas personas podrían decir "Pero con ' merge -s theirs ', puedo mantener lo que hice, también". Ese reinicio es simplemente descartar lo que hice.

Esa lógica también es defectuosa. En su lugar, puede:

 $ git branch i-was-stupid $ git reset --hard origin/master 

si realmente desea mantener un logging de su falla.

Un gran problema " -s theirs " tiene, en comparación con el anterior "reinicio al origen, descarte o dejar de lado el historial fallido", es que su historial "maestro" en el que se basa su desarrollo posterior mantendrá su basura fallida para siempre si lo hiciste "-s theirs" .

Con suerte, con el time se convertirá en un mejor progtwigdor y es posible que finalmente tenga algo que valga la pena compartir con el mundo cercano a la punta de su twig principal. Sin embargo, cuando eso sucede, no puedes ofrecer que tu twig principal sea arrastrada por la stream ascendente, ya que el mundo en general no estará interesado en tus errores anteriores.

Se encontró con este problema el otro día:

http://seanius.net/blog/2011/02/git-merge-s-theirs/

 git merge -s ours ref-to-be-merged git diff --binary ref-to-be-merged | git apply -R --index git commit -F .git/COMMIT_EDITMSG --amend 

Me estoy inclinando hacia el git reset --hard BRANCHNAME opción git reset --hard BRANCHNAME , pero he descubierto que hay un "su" en Git (v. 1.7.1 al less).

Si quieres probarlo, simplemente agrega un argumento "-Xtheirs" al command de fusión.

Por ejemplo, comenzando en el maestro:

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch

Si ha eliminado cualquier file en editBranch, obtendrá un conflit de fusión que se puede resolver con git rm FILENAME .

Una vez más, parece probable que el restablecimiento –hard BRANCHNAME sea una mejor opción, pero si tienes un caso en el que realmente necesitas uno de ellos, esto debería llevarte allí.