¿Puedo ocultar una combinación en progreso?

2 minutos de lectura

Estoy en medio de la resolución de conflictos para una fusión de git, pero quiero volver a un estado limpio temporalmente sin perder el trabajo que ya hice en la fusión. Si trato de git stash, obtengo errores para cada archivo para el que aún no se ha resuelto un conflicto: “necesita fusionarse”.

¿Hay una buena manera de guardar la fusión en curso? La única idea que tengo es clonar el repositorio en una carpeta diferente, pero eso parece excesivo.

  • Si clona el repositorio localmente, no mantendrá una copia separada del historial del repositorio en el disco, al menos en los sistemas Unix. Entonces, si tiene 10 GB de historial pero 100 MB de archivos, solo usará los 100 MB adicionales.

    -Dietrich Epp

    08/01/2016 a las 20:49

  • La combinación en curso se almacena en el índice y el árbol de trabajo. Dado que git stash hace dos confirmaciones de estas dos, pensaría que sería lo correcto, excepto que el estado de fusión en curso no se puede almacenar en una confirmación: contiene metadatos que git no escribirá en un árbol. El stash La secuencia de comandos podría modificarse para guardar el contenido del archivo de índice sin procesar en un blob propio, pero esto sería bastante complicado. No me gustaría intentar codificarlo esta noche. 🙂 Volver a clonar el repositorio parece ser el mejor método rápido.

    – torek

    9 de enero de 2016 a las 6:24

  • clones hecho para esto.

    – jthill

    9 de enero de 2016 a las 6:59

Podrías usar el git worktree comando para agregar un nuevo árbol de trabajo en una carpeta diferente. Esto es como un segundo índice y un árbol de trabajo, pero usando el mismo repositorio de git. man git-worktree:

   Manage multiple working trees attached to the same repository.

   A git repository can support multiple working trees, allowing you to check out
   more than one branch at a time. With git worktree add a new working tree is
   associated with the repository. This new working tree is called a "linked working
   tree" as opposed to the "main working tree" prepared by "git init" or "git clone".
   A repository has one main working tree (if it’s not a bare repository) and zero or
   more linked working trees.

  • ejemplo de uso en la documentación de git.

    – Qtax

    27 de octubre de 2020 a las 9:54

  • Podría ser bueno tener en cuenta que tirarías tu limpio bifurcarse en el nuevo árbol de trabajo, no en el que está trabajando en este momento.

    – Daraul

    11 de julio de 2021 a las 13:51

¿Ha sido útil esta solución?