Uso Básico de Git
Table of contents
En esta página discutimos lo siguiente:
- inicializar una carpeta para uso con control de revision
- clonar un repositorio existente de github
- entender origen (origin) de github
- hacer cambios locales y propagarlos a un repositorio
En esta leccion usamos el sistema operativo Ubuntu.
Usamos el cliente de Git >= 2.0
Usando Git Por Vez Primera
En nuestro ordenador local es fácil empezar usar git para control de revision.
En este ejemplo básico, creamos un directorio, cambiamos a ese directorio y lo inicializamos para que este bajo control de revision con git.
-> mkdir data
-> cd data
-> git init
A partir de este momento tenemos la habilidad de registrar todo cambio hecho a los datos del repositorio.
El comando git init
crea el directorio escondido .git
-> ls -la ~/data
total 28
drwxrwxr-x 3 devuser devuser 4096 Jun 9 01:05 ./
drwxr-xr-x 1 devuser devuser 4096 Jun 9 01:07 ../
drwxrwxr-x 8 devuser devuser 4096 Jun 9 01:06 .git/
-> ls -l ~/data/.git
total 48
-rw-rw-r-- 1 devuser devuser 9 Jun 9 01:06 COMMIT_EDITMSG
-rw-rw-r-- 1 devuser devuser 99 Jun 9 01:02 FETCH_HEAD
-rw-rw-r-- 1 devuser devuser 21 Jun 9 01:02 HEAD
drwxrwxr-x 2 devuser devuser 4096 Jun 9 01:02 branches/
-rw-rw-r-- 1 devuser devuser 310 Jun 9 01:02 config
-rw-rw-r-- 1 devuser devuser 73 Jun 9 01:02 description
drwxrwxr-x 2 devuser devuser 4096 Jun 9 01:02 hooks/
-rw-rw-r-- 1 devuser devuser 281 Jun 9 01:06 index
drwxrwxr-x 2 devuser devuser 4096 Jun 9 01:02 info/
drwxrwxr-x 3 devuser devuser 4096 Jun 9 01:02 logs/
drwxrwxr-x 11 devuser devuser 4096 Jun 9 01:06 objects/
drwxrwxr-x 5 devuser devuser 4096 Jun 9 01:02 refs/
El directorio .git
nunca debe ser intencionalmente alterado manualmente. No se debe copiar, mover, editar or borrar archivos o carpetas.
El directorio .git
es donde Git guarda toda la información y metadata del repositorio. Contiene toda la historia del projecto, incluyendo los cambios hechos, ramas, etiquetas, y ajustes de configuración. Este directorio es escencial para mantener un registro necesario para el control de revisión. En caso que el directorio .git
sea borrado, se pierde toda referencia historica del desarrollo del projecto.
Manejando La Rama Predeterminada
Inicialmente, la rama predeterminada de un repositorio de github recien creado se llama master
. Sin embargo, hoy día la convención general es nombrar la rama main
.
Podemos usar cualquier nombre que deseamos para nombrar la rama prederminada de un repositorio de github.
Si así lo deseamos, podemos configurar nuestro sistema local de tal manera que cada vez que creamos un repositorio tomará main
como el nombre de la rama predeterminada. Para lograr esto usamos el comando siguiente:
-> git config --global init.defaultBranch main
Para verificar el ajuste usemos este comando.
-> git config --global init.defaultbranch
Para listar todos los ajustes que tenemos usemos este comando
-> git config --global --list
Si tiempo después de hacer el ajuste a usar main
como rama predeterminada, queremos usar una nueva rama llamada develop
, la podemos cambiar así:
git config --global init.defaultBranch develop
Si no deseamos tener rama predeterminada en nuestro sistema local, hacemos lo siguiente:
-> git config --global --unset init.defaultBranch
Github registra todos los ajustes personalizados en el archvo $HOME/.gitconfig
. El ajuste para rama predeterminada se ve así:
[init]
defaultBranch = main
Además de hacer el ajuste con git config
, debemos cambiar el repositorio en que estamos trabajando de esta manera:
-> git branch -m main
Clonar Repositorio Externo
Github provee el cliente de git
para manipular control de revision en nuestra sistema local.
Si aún no lo has hecho, sigue las instructiones para instalar el cliente de git en tu sistema.
Para usar un repositorio existente en github, solo tenemos que clonarlo usando el cliente the git.
-> git clone https://github.com/devesplab/git-devesp.git
El comando anterior creará un directorio con el nombre del repositorio git-devesp
. Podemos cambiar a ese directorio y empezar a trabajar.
-> cd git-devesp
Manejando El Origen
El origen (“origin” en Inglés) de git es una referencia a la URL o API de punto de donde podemos bajar o empujar cambios.
Cuando clonamos un repositorio usando git clone
, el origin es origin
for defecto y apuntando a la URL de Github.
Cuando creamos un repositorio local, debemos agregar la referencia al origen para poder bajar y empujar cambios.
Siguiendo el ejemplo que estamos discutiendo:
- creamos un nuevo directorio
- cambiamos al directorio
- agregamos un origen remoto usando un TOKEN para autenticación.
- verificamos el origen remoto
- immediatamente bajamos el contenido del repositorio y la rama predeterminada
devuser@ubuntu2204-2-devesp
hist:41 -> mkdir data
devuser@ubuntu2204-2-devesp
hist:41 -> cd data
devuser@ubuntu2204-2-devesp
~/data -> git init
devuser@ubuntu2204-2-devesp
~/data
hist:41 -> git remote add origin https://devesplab:github_pat_11A2GKDGA0...ADFewfsdfs122@github.com/devesplab/git-devesp.git
devuser@ubuntu2204-2-devesp git(main)
~/data
hist:42 -> git remote -v
origin https://devesplab:github_pat_11A2GKDGA0...ADFewfsdfs122@github.com/devesplab/git-devesp.git (fetch)
origin https://devesplab:github_pat_11A2GKDGA0...ADFewfsdfs122@github.com/devesplab/git-devesp.git (push)
devuser@ubuntu2204-2-devesp
~/data
hist:41 -> git pull origin main
Github no permite el uso de contraseñas. Debemos usar un TOKEN para autenticación.
En el ejemplo anterior truncamos el token para mejor legibilidad.
Hacer y Empujar Cambios
En nuestro ejemplo, usamos el comando git status
que muestra que inicialmente no tenemos nada.
devuser@ubuntu2204-2-devesp git(main)
~/data
hist:43 -> git status
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
De ahora en adelante hacemos referencia a “origin” para cualquier operación que envuelva bajar o empujar cambios. Enseguida creamos un nuevo archivo.
devuser@ubuntu2204-2-devesp git(main)
~/data
hist:43 -> echo "Hello, Devesp!" > hello.txt
Y ahora empujamos el nuevo cambio.
devuser@ubuntu2204-2-devesp git(main)
~/data
hist:43 -> git add hello.txt
devuser@ubuntu2204-2-devesp git(main)
~/data
hist:43 -> git commit -am "agregar data"
devuser@ubuntu2204-2-devesp git(main)
~/data
hist:67 -> git push origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 6 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 299 bytes | 299.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/devesplab/git-devesp.git
9a719b8..a3e6d62 main -> main
Para verificar solo habramos el repositorio en el navegador web.
https://github.com/devesplab/git-devesp.git
Conclusion
Una vez que nuestro trabajo como desarrolladores crece en complejidad, es necesario rastrear los cambios que se hacen pasado el tiempo. Puede que halla mas de un desarrollador trabajando en un proyecto, o talvéz hay varios porciones interralacionas que tienen que registrarse. Git ayuda a mantener el auditaje y preservar los cambios históricos de un proyecto.
Referencias
Glosario De Comandos
Los comandos siguientes son usados frecuentemente en sesiones de Linux.
- git
- cliente de github para la manipulación local de control de version de repositorios de github
Referencias Utiles
DevEsp :: Linux
Referencias en línea:
- Documentación General de Git
- Client de git
- Parámetros de git-config