¿Empezar de cero en git mess?

He estado trabajando en una solución de Visual Studio que contiene aproximadamente 40 o 50 proyectos.

Agregué aproximadamente 10 proyectos más al file .sln, pero mientras tanto, alguien más agregó un proyecto al file .sln.

Entonces efectivamente había un file – V1, que dos personas trabajaron independientemente para crear dos V2 separados.

Estoy descubriendo que fusionar los cambios es una pesadilla. La máquina que estoy usando tiene instalado BeyondCompare y me muestra una combinación de tres columnas. No pude entender eso, así que decidí sobrescribir mi file local con lo que git piensa que es la versión remota. Pero luego tengo el problema de volver a agregar los nuevos proyectos.

Asi que. Antes de hacer la extracción 90 + rebase / commit, ¿hay alguna manera fácil de resolver esto? Al igual, sobrescriba la copy local actual de todo con lo que está en el lado remoto. Luego vuelve a agregar en mis proyectos recién agregados. Entonces cometer. Build + testing. Luego empuja. ¿Quizás?

* edit: FWIW, la máquina también tiene tortuga git instalada y ahora todo se muestra con marcas verdes … así que está bastante bien, ¿verdad?

Si está solicitando Git / alguna otra herramienta para saber que hay proyectos agregados en el file sln en remoto, agréguelos y luego agregue los que he agregado; no, ese no debería ser su enfoque.

Solo arregle los conflictos de fusión de modo que todos los proyectos que se agregaron en el control remoto y los que ha agregado estén allí.

Primero, volvamos a un estado conocido. Haz una git reflog y encuentra una confirmación que está en un punto antes de que intentaras hacer todo esto tirando y rehaciendo. Haga una git checkout -b my-feature <commit-id> para crear una twig llamada my-feature que apunte a esa confirmación. Verifique que funcione como se espera sin todos los cambios recientes del server.

Ahora, haga que su twig master coincida con lo que hay en el server haciendo git branch -f master origin/master .

Ahora viene la parte difícil. Debe resolver los conflictos de fusión entre lo que ha cambiado y lo que ha cambiado en el server. Esta es una parte normal de trabajar en grupo y debes aprender metódicamente cómo hacerlo en lugar de voltear sobre eso. Este es un buen recurso en eso. Más allá de comparar es una herramienta muy buena para ayudar a resolver las fusiones de 3 vías, y debes aprender a usarla.

A veces, si tiene un file generado por una herramienta y no escrito a mano, es más fácil usar la herramienta para realizar los cambios, simplemente borrando los cambios locales y volviéndolos a agregar más tarde. Si no entiende realmente la syntax de un file sln, este podría ser el caso para usted.

Para cambiar solo el file sln para que coincida con lo que hay en el server, haga lo siguiente:

 git checkout master -- filename.sln git commit -am "Reset solution file to match origin" 

A continuación, agregue sus proyectos y vuelva a enviar el file de forma normal. Ahora desea get estos cambios en la twig principal. Hacer:

 git rebase master # resolve any merge conflicts, then git rebase --continue after each one git checkout master git merge my-feature # test to make sure everything works git push 

Estoy en una situación "igual pero diferente". He dertwigdo el problema en dos partes. Una es simplemente capturar la historia que puedo y ponerla en una secuencia nominal de instantáneas / confirmaciones. Pude identificar una cantidad de subproyectos y fases distintos, por lo que cada uno obtuvo su propio repository durante la fase de captura. Luego puedo unirlos y usar git filter-branch para llevarlo a una gran historia.

Para el trabajo actual, estoy comenzando un nuevo repository git desde un punto "ahora" adecuado, y también continuando con las técnicas de fusión establecidas , con volcados en el repository git hasta que podamos fusionar completamente los dos processs. Algunas personas necesitarán algunos medios convincentes (de autogestión) para no abandonar la práctica actual hasta que la nueva funcione.

Lleva un time "get" la filosofía git y abandonar los viejos methods atrincherados pero equivocados.