Git: ¿a dónde van los files cuando cambias de twig?

Estoy empezando a aprender sobre git y me encanta su concepto. Hay una cosa que es un poco extraña para mí hasta ahora, que parece que no puedo encontrar en una búsqueda. Cuando git checkout branchName para cambiar a la twig que quiero, cuando miro la window del Finder puedo ver visualmente que los files / carpetas aparecen o desaparecen en el repository en function de la twig en la que estoy.

Las 2 imágenes a continuación muestran cómo estoy en una sucursal y luego voy a una sucursal diferente (Esto es por hacer un curso de Lynda.com). El lado izquierdo muestra el Finder y cómo la carpeta _fonts desaparece porque no estaba presente en la otra twig.

¿Pero dónde exactamente está (y los otros files que tienen cambios)? Por lo que veo aquí, no puedo ver físicamente files de diferentes twigs a la vez, pero tengo curiosidad de saber dónde van realmente en el sistema cuando cambio twigs.

Dentro de una rama con una carpeta _fonts

Dentro de una rama diferente que no tiene la carpeta _fonts

Por lo que veo aquí, no puedo ver físicamente files de diferentes twigs a la vez, pero tengo curiosidad de saber dónde van realmente en el sistema cuando cambio twigs.

Sí, tú puedes hacerlo

Simplemente necesitas seguir esto:

Git expuso esta function en 2007 bajo el nombre de git workdir . Se ubicó debajo de la carpeta git contrib durante muchos años.

En la versión 2.5 de git fue expuesto como git worktree . Le permite trabajar simultáneamente en múltiples twigs.

¿Cómo hacerlo?

 # create a new working directory # the path will be added and the given branch name will be checkout out git worktree add <path to the new working directory/ branch name> # now you have 2 folders with different branches in each one of them. # if you used something like `git worktree /tmp/aaa` than you will have # branch aaa checked out in the new folder and you can switch to any branch # you wish 

Cada worktree tiene sus propios 3 estados por lo que no puede la misma twig en múltiples worktrees.

por ejemplo:

 git worktree add <second path> 

creará otra carpeta en su computadora que le permitirá trabajar en diferentes sucursales simultáneamente.

git worktree creará 2 carpetas de trabajo separadas, separadas entre sí mientras apunta al mismo repository.

Esto le permitirá hacer cualquier experimento en el nuevo tree de trabajo sin tener ningún efecto en el repository mismo. En la image adjunta, puede ver que hay dos carpetas de trabajo separadas, pero ambas están usando un solo repository y comparten el contenido.

Aquí hay una muestra sobre cómo crear un nuevo tree de trabajo y cuál es el resultado:

enter image description here

Git llama a los files y puedes ver el " tree de trabajo ". Junto a este tree de trabajo, Git crea una carpeta llamada .git/ donde almacena casi la totalidad de la configuration y los datos del repository. Si tiene curiosidad, puede abrir esta carpeta para verla con Finder en OS X usando el command open o examinarla con su terminal (protip: Pase -a al command ls para listr los files ocultos). Inmediatamente algunos de los trabajos internos de Git se hacen aparentes, así que definitivamente te animo a que lo pruebes tú mismo.

Dentro de esta carpeta, hay una carpeta de objects/ donde Git almacena files, cambios a files, confirmaciones y relaciones. Puede explorar sus contenidos con git cat-file . Para get más información sobre estos objects, consulte el capítulo del libro; https://git-scm.com/book/en/v2/Git-Internals-Git-Objects .

El command git proporciona una interfaz agradable para trabajar con esos objects y otros contenidos de esta carpeta, para que pueda evaluar y gestionar fácilmente el estado del tree de trabajo.

Recomiendo tomarse el time para leer todo el libro con el que he estado enlazando en todo momento si todavía tiene curiosidad y desea get más información. La última sección, titulada " Git Internals " detalla muy bien el funcionamiento interno de Git.