git version-control git-merge merge-conflict-resolution git-rerere

git - Compartiendo caché rerere



version-control git-merge (2)

He visto a gente recomendar que todos los desarrolladores configuren un enlace simbólico en su máquina desde C:/project/.git/rr-cache a una carpeta compartida //server/rr-cache .

Sin embargo, parece más conveniente compartir la carpeta incluyéndola en el propio repositorio git, si es posible. He visto a personas mencionar esta solución, pero en realidad no cómo hacerlo.

¿Algunas ideas?


Se puede compartir a través de una sucursal dedicada. Desea detenerse si hay un conflicto en esa rama y resolverlo, ya que significa que hubo intentos de resolver el mismo conflicto de 2 maneras diferentes. No hace falta decir que esa será la excepción a la regla.

Para los demás en esta pregunta, busque en Google "Rama por función" para ver dónde es útil.

Los ganchos pueden automatizar la sincronización de la rama rr-cache común.

Esto es lo que necesitas para automatizar. rereresharing es una rama de ejemplo con la que se está fusionando, rr-cache es una rama que almacena las resoluciones; Todos estos pasos trabajaron sin problema:

git checkout --orphan rereresharing start-sprint-1 git --git-dir=.git --work-tree=.git/rr-cache checkout -b rr-cache git --git-dir=.git --work-tree=.git/rr-cache add -A git --git-dir=.git --work-tree=.git/rr-cache commit -m "initial cache" git clean -xdf git checkout rereresharing git merge --no-ff FTR-1 git merge --no-ff FTR-2 vim opinion.txt # resolve conflict git add -A git commit git checkout rr-cache git --git-dir=.git --work-tree=.git/rr-cache add -A git --git-dir=.git --work-tree=.git/rr-cache commit -m "resolution" git remote add origin ../bpf-central git push origin rereresharing rr-cache cd - # assumes you were previously in the other local repo git remote add origin ../bpf-central git fetch git branch rr-cache origin/rr-cache ls .git/rr-cache git --git-dir=.git --work-tree=.git/rr-cache checkout rr-cache -- . ls .git/rr-cache

Ahora está listo para hacer la misma fusión y tendrá su conflicto resuelto.


Tal vez, en lugar de compartir rr-cache otra opción sería aprender las resoluciones de conflicto del historial de Git existente utilizando rerere-train.sh .