2011-04-15 9 views
17

Estoy tratando con bastantes archivos binarios generados por un programa. La fusión automática no funciona bien para estos archivos. Lo que me gustaría hacer al fusionarme es, literalmente, tomar una copia u otra. No es ideal, pero creo que es el mejor enfoque.Git fusionando los pasos

Ahora mi entender, es que si quería tomar un archivo de la rama estoy fusión de, y descartar por completo nuestra versión, que debería hacer:

git merge <branchname> 
git checkout --theirs <filename> 
git add <filename> 
git commit 

¿Es esto correcto o estoy ¿Echando de menos algo?

me gustaría hacerlo sin utilizar .gitignore

+0

He estado buscando un momento sobre cómo resolver los conflictos resultantes de 'git merge -X theirs upstream/master'" ambos añadidos ". 'git checkout --theirs .' fue lo correcto. Gracias. –

Respuesta

22

Si su objetivo es de hecho para mantener una versión o la otra, entonces sí, se desea utilizar:

git checkout <--theirs|--ours> <path> 
git add <path>`. 

Por supuesto, como usted dice, no es ideal. Si hay alguna manera de evitar esto, deberías. Si puede, intente adoptar hábitos de flujo de trabajo que eviten cambiar esos archivos en ramas divergentes que luego deberán fusionarse. Si los archivos se generan a partir de contenido rastreado, es probable que realmente desee ignorarlos; si tiene buenas razones para no hacerlo, le conviene generarlos a partir del contenido de seguimiento fusionable, si eso es posible.

Por lo tanto, explore todas sus otras opciones antes de hacer esto, pero si debe hacerlo, lo ha hecho bien.

+0

¿Se supone que debe permanecer "Ambos modificados" antes de agregarlo? Hago esto, pero genera un nuevo archivo, con TH al final: S –

+0

Editar: Sí, no le notifica el hecho de que está tomando el suyo/nuestro. Solo pago y luego agregar. –

1

ver en el uso .gitignore hacer caso omiso de los archivos generados. Puede que tengas que hacer git rm también.

+0

Esto es cierto ... suponiendo que los archivos binarios son generados por el programa directamente de las cosas que se rastrean. El OP probablemente no esté en esa situación. – Cascabel