tutorial mac gui for español descargar commands git

mac - git repository



¿Qué significa realmente "agregar al índice" en Git? (2)

Una metáfora útil.

"Agregar un archivo al índice", "preparar un archivo", "agregar un archivo al área de almacenamiento" son sinónimos.

Personalmente prefiero el término área de preparación al índice porque se presta a una metáfora útil. Si cometer es como "tomar una instantánea", la puesta en escena se trata de " componer la toma ".

Imagínate a ti mismo como un fotógrafo profesional a punto de tomar una foto de clase: reúnes a todos tus sujetos y los preparas para la foto, te aseguras de que estén todos allí y de que no haya intrusos, que todo lo importante esté en el cuadro , etc. Entonces ... ¡Snap!

Por supuesto, si se da cuenta, justo después de tomar la fotografía, que muchos niños tenían los ojos cerrados (o que algún niño le estaba dando orejas de conejito al maestro), es posible que desee deshacerse de la primera imagen y tomar otra, mejor; en Git, eso correspondería a enmendar el último commit . Pero yo divago...

¿Qué sucede cuando agrega un (nuevo) archivo al índice?

Para configurar algo, usualmente usaría el comando git add alto nivel ("porcelana") ... o el git stage equivalente exacto de git stage (introducido por Scott Chacon en Git v1.6) que encuentro mucho más intuitivo, pero no lo hago. Parecen casi tan populares.

Cuando agrega un nuevo archivo al área de preparación, suceden tres cosas:

  1. los contenidos del archivo están en hash,
  2. el contenido del archivo se almacena en la base de datos de su repositorio,
  3. el contenido del archivo en su árbol de trabajo se registra en el archivo .git/index .

Agregar un archivo al índice con comandos de plomería

Como experimento, para corregir ideas, puede usar los comandos de Git de bajo nivel ("plomería") para reproducir lo que hace git add en ese caso simple. Comience desde un nuevo repositorio:

$ cd ~/Desktop $ mkdir teststage $ cd teststage $ git init

Antes de hacer nada más, siga adelante y mire en la carpeta .git/objects .

$ ls -la .git/objects

Verá que solo contiene dos subdirecciones (vacías): info y pack . Cree un archivo, diga README.md :

$ printf "hello/n" > README.md

Ahora vamos a la etapa README.md , un paso a la vez. Primero, use el comando git hash-object nivel inferior para (1) README.md el contenido de README.md y (2) escribir este último en la base de datos del repositorio.

$ git hash-object -w README.md 27728344ab3ae5b8aa334418d1e1b0f5be0ea0cc

( -w significa escribir, aquí.)

Ahora, si observa la carpeta .git/objects , verá que el nuevo objeto (un blob) se ha agregado a la base de datos:

$ tree -la .git/objects/ .git/objects ├── 27 │   └── 728344ab3ae5b8aa334418d1e1b0f5be0ea0cc ├── info └── pack

Solo queda una cosa para completar la puesta en escena de README.md . Necesitamos (3) registrar el contenido del archivo en el índice. Eche un vistazo dentro de .git , aún no debería haber ningún archivo llamado index . Ahora si corres

$ git update-index --add --info-only README.md

y luego eche un vistazo dentro de .git , verá que se ha creado un archivo de index binario.

Eso es. Has puesto en escena README.md . Está listo para entrar en su próximo compromiso. Compruébelo usted mismo:

$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.md

Ahora puedes hacer tu primer commit, si quieres.

Tengo una pregunta sobre lo básico de Git.

Básicamente, ¿qué significa la acción conocida como "agregar al índice" en Git? Lo entiendo así:

Si para cualquier archivo, git calcula la suma de SHA-1, entonces básicamente agregar al índice significa que calcula la suma de SHA-1 y agrega un archivo al área de preparación.

¿Estoy en lo correcto?


Cuando agrega un archivo, lo marca como un archivo que confirmará una vez que ejecute el comando git commit. Un atajo para agregar todos los archivos modificados automáticamente es cometer con git commit -a. Otro método abreviado si está agregando varios archivos nuevos al mismo tiempo es ejecutar git add -A.