Me gustaría saber qué guarda Git en realidad cuando mueve los archivos al estado "de transición".¿Cómo almacena el área de almacenamiento de git los archivos?
Considere la siguiente secuencia:
Se añade un nuevo archivo y comprometida con el repositorio local:
touch file.txt
git add file.txt
git commit
Puedo hacer cambios en el archivo:
echo text1 > file.txt
git add file.txt
que entonces edite el archivo de nuevo, antes de confirmarlo:
echo text2 > file.txt
Un git status muestra:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: file.txt
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file.txt
#
entonces cometer el archivo:
git commit file.txt
Cómo es git capaz de manejar la nueva puesta en escena, segunda actualización a sin ser archivo.txt ¿dijo a? El resultado de "estado" parece que intentará verificar la primera revisión, pero retener los cambios no registrados sin registrarlos.
¿Hay una etapa implícita que se realice en este caso?
El comportamiento que observo cuando ejecuto la prueba descrita anteriormente es que envía también los contenidos no escaneados del archivo ("texto2") al repositorio. ¿Es correcta esta interpretación? Creo que enviaría la versión "en etapas" del archivo ("texto1"). Estoy confirmando que esto es lo que está en el repot al hacer un "archivo de comprobación de git.txt". –
Acabo de hacer una prueba pero no obtuve sus resultados. 'mkdir gittest'' cd gittest' 'git init'' echo text 1> test.txt'' git add .' 'git commit -m 'Inicial commit''' echo text 2> test.txt' 'git add .' 'echo text 3> test.txt' En este punto, está el cambio por etapas (" texto 2 ") y el cambio no evaluado (" texto 3 "). Ahora, 'git checkout test.txt' y' cat test.txt'. Obtengo "texto 2".El cambio local se descartó con el cambio por etapas. – redhotvengeance
Obtengo los mismos resultados que su secuencia de prueba. Pero si hago un 'git commit' después del paso' echo text 3> test.txt' (similar a mis pasos en la publicación original), ahí es cuando observo que git organiza implícitamente el contenido de "texto 3" y lo envía al repo. Para mayor claridad, la secuencia que hago aquí es: 'mkdir gittest'' cd gittest' 'git init'' echo text 1> test.txt'' git add .' 'git commit -m 'Initial commit''' echo text 2 > test.txt' 'git add .'' echo text 3> test.txt'' git commit -m 'new'' 'git checkout test.txt'' cat test.txt', lo que da como resultado una salida de "texto 3 ". –