Creo que esta notación de git slash probablemente se entienda mejor mirando dentro de su .git
carpeta.
Por ejemplo, aquí hay un árbol abreviado de mi .git para la base de origen de LibreOffice.
En Linux sudo apt-get install tree
es útil para ver esto.
En Windows , creo que el tree
comando aún podría funcionar.
Desplácese hacia abajo y eche un vistazo a las referencias (también conocidas como 'referencias') en la parte inferior:
$ tree
.
├── branches
├── config
├── description
├── FETCH_HEAD
├── gitk.cache
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
...
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ ├── heads
│ │ ├── master
│ │ └── remotes
│ │ └── origin
│ └── remotes
│ └── origin
│ ├── distro
│ │ ├── cib
│ │ │ └── libreoffice-6-0
│ │ ├── collabora
│ │ │ └── cp-6.0
│ │ └── lhm
│ │ └── libreoffice-5-2+backports
│ ├── HEAD
│ ├── libreoffice-6-2
│ ├── master
│ └── private
│ └── mst
│ └── sw_redlinehide_4a
├── objects
│ ├── info
│ └── pack
│ ├── pack-b80087dc57e2b3315f449ca0f1aaa91987bf0c5e.idx
│ ├── pack-b80087dc57e2b3315f449ca0f1aaa91987bf0c5e.pack
│ ├── pack-eb4e6808029e712d8d9c2671accbbd98aaeb9a04.idx
│ └── pack-eb4e6808029e712d8d9c2671accbbd98aaeb9a04.pack
├── ORIG_HEAD
├── packed-refs
└── refs
├── heads
│ ├── master
│ └── remotes
│ └── origin
├── remotes
│ └── origin
│ ├── distro
│ │ ├── cib
│ │ │ └── libreoffice-6-0
│ │ ├── collabora
│ │ │ └── cp-6.0
│ │ └── lhm
│ │ └── libreoffice-5-2+backports
│ ├── HEAD
│ ├── libreoffice-6-2
│ ├── master
│ └── private
│ └── mst
│ └── sw_redlinehide_4a
└── tags
└── libreoffice-6-2-branch-point
32 directories, 45 files
Podría haber sido menos confuso si se presentara así, pero no fue así:
repositories (i.e. independent trees)
├──local
│ └──master
│
└──origin1
│ └──master
└──origin2
└──master
Tenemos tres tipos básicos de referencias: cabezas , controles remotos y etiquetas .
.git / refs / heads tiene nuestro maestro local .
.git / refs / remotes puede contener varios controles remotos, aunque por el momento solo tenemos origen en él.
.git / refs / tags (se discute en otra parte).
origen , por lo tanto, es nuestro único y remoto. Tiene origen / maestro .
Encontramos que tenemos 2 HEADS (punteros a las sucursales actuales), uno local y otro remoto:
$ cat .git/HEAD # local: HEAD -> master
ref: refs/heads/master
$ cat .git/refs/remotes/origin/HEAD # remote origin: HEAD -> master
ref: refs/remotes/origin/master
Si enumeras tus sucursales :
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/aoo/aw080
remotes/origin/aoo/trunk
remotes/origin/distro/capgemini/cg-4.1
remotes/origin/distro/cib/libreoffice-5-0
remotes/origin/distro/cib/libreoffice-5-1
remotes/origin/distro/cib/libreoffice-5-2
...
- La primera rama listada ( maestra ) es la única que no es remota. Entonces, en este caso tenemos una sucursal local. Aquí es donde comenzaremos nuestro propio trabajo, para nuestras propias nuevas sucursales y compromisos posteriores.
A continuación, puede tener muchas sucursales de seguimiento remoto, y nosotros las tenemos aquí. Usted sabe que estas son ramas de seguimiento remoto porque tienen el prefijo ' remotes / '. Los que se muestran aquí son para el origen con nombre remoto.
Entonces, la segunda línea es el puntero de rama actual del origen . Mandos a distancia / origen: CABEZA - señala a -> maestro. Esto muestra que en el repositorio remoto, la rama actual es su rama llamada master , (no debe confundirse con nuestra rama local llamada master ).
Las ramas restantes no se encuentran en su .git / refs / tree, sino que las encontrará en .git/packed-refs
.
Cuando vamos a buscar , descargamos los cambios desde el repositorio remoto a nuestro repositorio de seguimiento remoto.
Cuando nos fusionamos , fusionamos los cambios en este repositorio de seguimiento local y remoto en nuestra sucursal o sucursales locales de trabajo, en este caso en nuestra sucursal maestra.
(Cuando hacemos git pull hacemos los dos pasos en una sola operación).
También es interesante observar que estos UUID remotos y locales para el maestro actualmente apuntan al mismo nodo (también conocido como 'commit'):
$ cat refs/heads/master # local master
1ca409292272632f443733450313de5a82c54a9c
$ cat refs/remotes/origin/master # remote origin master
1ca409292272632f443733450313de5a82c54a9c
Entonces, nuestro maestro local apunta al mismo lugar que el maestro de origen del control remoto:
[local] master = [remote] origin master
Finalmente, creo que también es útil echar un vistazo a .git/packed-refs
$ cat packed-refs
# pack-refs with: peeled fully-peeled
3c1d4742e649fe9c8aed8c2817fe3e1f3364f298 refs/remotes/origin/aoo/aw080
e87c8b7922e9a73e0abb7f9a7a47c9ac3374a826 refs/remotes/origin/aoo/trunk
b70fdffb041c12f124dcc0822b61bf3450e53137 refs/remotes/origin/distro/capgemini/cg-4.1
5dbc3f1754809b9489faaf380b1a4bdbcfbb6205 refs/remotes/origin/distro/cib/libreoffice-5-0
cfdbc96ca47d68d6785fd21829a8d61f49d6e591 refs/remotes/origin/distro/cib/libreoffice-5-1
5189c8c47461ef09739086e55512fc6a10245273 refs/remotes/origin/distro/cib/libreoffice-5-2
3bee5917569ca8e6ee3b086458f5b1a917b88ca1 refs/remotes/origin/distro/cib/libreoffice-5-3
92fbe703f9ca480d3a2b8610d87e991c729edf77 refs/remotes/origin/distro/cib/libreoffice-5-4
05c0a5df66cc69d75280f05b804cf82f3387d42b refs/remotes/origin/distro/cib/libreoffice-6-0
7fe193e759b24b90852e6e327115b77114d7b119 refs/remotes/origin/distro/cib/libreoffice-6-1
8187f7aa413e7ef7b377eea2b057d336bf256867 refs/remotes/origin/distro/collabora/cd-5.3
7a6b608591e21ef61dc05cff9fc58da531035755 refs/remotes/origin/distro/collabora/cd-5.3-3.1
....
Sin duda, esto deja más preguntas que respuestas, pero creo que puede comenzar a ayudarlo a responder sus propias preguntas sobre qué es qué.