Tutorial de Git - Flujo de trabajo de Git
Como acabamos de aprender, añadir un archivo o confirmarlo es básicamente un proceso de dos pasos.
-
git add
Añada los archivos al área de preparación. Como el comando de abajo,
$ git add test1.txt
Se añade
file1.txt
desde su copia de trabajo al área de preparación y está listo para confirmar el repositorio. Siempre que creamos un fichero, está en nuestra copia de trabajo, está en el ordenador local y después del comandogit add
, va al área de preparación. -
git commit
Toma todos los archivos de su área de preparación para empujarlos al repositorio.
$ git commit -m "commit message"
Normalmente añadimos un mensaje para describir qué es lo que se confirma, como lo que hemos cambiado en los ficheros o proyectos, por lo que podríamos obtener la información de registro de esta confirmación en el futuro.
git add
Después de haber cambiado un archivo y haberlo guardado, este archivo en nuestro ordenador es diferente del archivo en nuestro repositorio, porque en el repositorio sigue siendo el mismo contenido antes de esta modificación. Si escribe git status
, podrá ver que Git sabe que su fichero ha sido actualizado.
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test1.txt
no changes added to commit (use "git add" and/or "git commit -a")
Como sugiere Git, usamos git add
para actualizar los archivos que serán confirmados.
$ git add test1.txt
Ahora, puede confirmar este archivo actualizado desde el área de preparación al repositorio.
A veces, hemos actualizado múltiples archivos y por supuesto podríamos añadir archivos de esta forma,
$ git add test1.txt test2.txt test3.txt
Pero te trae un gran dolor de cabeza si tienes un montón de archivos o el nombre del archivo es demasiado largo. Git tiene un atajo para añadir todos los archivos actualizados y los no rastreados al área de preparación,
$ git add .
Aquí, .
significa todos los archivos que son diferentes del repositorio.
git commit
Hemos mostrado cómo usar git commit
cuando hemos introducido otras características de Git. Básicamente, git commit
empuja el área de preparación al repositorio, y se le recomienda encarecidamente que añada el mensaje de confirmación para describir lo que ha cambiado para esta confirmación específica. Puede recuperar toda la información de su registro de confirmación con el comando git log
.
Confirmar directamente al repositorio
Antes de lo que comprometemos, necesitamos añadir cambios en el área de preparación. Entonces podríamos comprometerlos. Pero realmente no hay necesidad de agregarlos al área de preparación. Primero, porque sabemos que estos cambios los queremos en nuestro proyecto final, en nuestro repositorio o en el servidor para que todo el mundo tenga archivos actualizados.
Así que lo que podríamos hacer es comprobar primero el git status
, para saber qué es lo que se ha modificado en la copia de trabajo. Entonces podríamos usar directamente git commit
antes incluso de añadir estas modificaciones al área de preparación.
$ git commit -a -m "commit message here."
Lo que hacemos aquí es usar un atajo en lugar de añadirlo al área de preparación. Pero esto sólo es útil en ciertas situaciones, siempre que use este comando, debe tener cuidado porque va a coger todo lo que hay en su copia de trabajo y empujarlo directamente al repositorio.
Enmendar un commit
Podríamos haber llegado a una situación después de un commit, encontramos una errata u otros pequeños fallos en el código. Por supuesto, podría revisar los códigos y confirmar los cambios en el repositorio de nuevo. Pero lo que podríamos hacer es reescribir el último commit, y el último commit se reescribirá con la nueva modificación.
La bandera --amend
después de git commit
le dice a Git que esta confirmación reemplazará la anterior que ya no estará en su rama de trabajo.
$ git commit --amend -m "new information is updated"
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook