- 1. Links de interés
- 2. Consideraciones previas
- 3. Receta 1: Instalar git en Ubuntu
- 4. Receta 2: Configurar parametros globales de git
- 5. Receta 3: Generar y añadir claves ssh a Github
- 6 Receta 4: Crear un repositorio GitHub y asociarlo al repositorio local
- 7 Receta 2: Clonar un repositorio de Github
Las líneas que debemos escribir en la ventana de comandos son las que van despues de un ❯
sin el ❯
.
Por tanto si vemos 👇
❯ pwd
/Users/davidgchaves/projects
debemos escribir, simplemente 👇
pwd
Instalar git en Ubuntu
En una ventana de comandos ejecutamos, uno tras otro, los 3 comandos siguientes 👇
❯ sudo add-apt-repository ppa:git-core/ppa
❯ sudo apt update
❯ sudo apt install git
Comprobamos que todo ha ido bien y que nuestro sistema reconoce git
🎉🚀⚡️
❯ git version
git version 2.24.3 (Apple Git-128)
NOTA: He ejecutado git --version
en un OS X y no en un Linux... de ahí el resultado.
Configurar parametros globales de git tras instalación
Vamos a configurar nombre, email, editor y defaultBranch. Es posible configurar más cosas pero con estas 3, por el momento, tenemos suficiente ☄️
❯ cd ~
❯ git config --global user.name "AQUI VA TU NOMBRE"
❯ git config --global user.email AQUI_VA_TU_EMAIL@WHATEVER.COM
❯ git config --global core.editor AQUI_VA_TU_EDITOR
❯ git config --global init.defaultBranch main
Ahora podeis comprobar como ha quedado configurado ejecutando
❯ git config --list --show-origin
Generar y añadir claves ssh para identificarnos en Github
Pasos sacados de:
- Generar una nueva clave SSH y agregarla al ssh-agent
- Agregar una clave SSH nueva a tu cuenta de GitHub
Generamos un par de claves desde el directorio home (~
)
❯ cd ~
❯ ssh-keygen -t ed25519 -C "EMAIL_USADO_EN_REGISTRO_DE_GITHUB"
Iniciamos el agente SSH (ToDo mellorar isto) tenemos que volver a bash)
❯ bash
$ eval "$(ssh-agent -s)"
$ fish
o alternativamente (ToDo: consultar ssh config github)
Agregamos la clave privada SSH al ssh-agent
❯ ssh-add ~/.ssh/id_ed25519
Instalamos y usamos xclip
para copiar al portapapeles la clave pública SSH
❯ sudo apt install xclip
❯ xclip -sel clip < ~/.ssh/id_ed25519.pub
A partir de aquí, seguir los pasos de Agregar una clave SSH nueva a tu cuenta de GitHub desde el punto 2 en adelante.
Crear un repositorio GitHub y asociarlo al repositorio que tengamos en la máquina local
Usar la opción New Repository del menu 👇
Nombre, descripción y determinar si va a ser privado o público.
En el caso de este repositorio, para crear la carpeta debemos primero comprobar que nos encontramos en el directorio correcto projects
👇
❯ pwd
/Users/davidgchaves/projects
Para a continuación crear el directorio...
❯ mkdir first-steps-with-git-and-github-ies-illa-de-saron
...y entrar en el
❯ cd first-steps-with-git-and-github-ies-illa-de-saron/
Finalmente volvemos a comprobar que estamos donde debemos estar
❯ pwd
/Users/davidgchaves/projects/first-steps-with-git-and-github-ies-illa-de-saron
Debemos seguir las instrucciones que nos da Github. En concreto las de …or create a new repository on the command line
En el caso de este repositorio, he ampliado algo las instrucciones para que nos resulte más sencillo entender qué estamos haciendo en cada momento. A continuación las lineas de comandos y sus respuestas. Tened en cuenta que las vuestras pueden variar.
Creamos el fichero vacio (touch
) README.md
❯ touch README.md
Inicializamos (init
) el repositorio en nuestra máquina
❯ git init
Initialized empty Git repository in /Users/davidgchaves/projects/first-steps-with-git-and-github-ies-illa-de-saron/.git/
Consultamos el estado (status
) del repositorio
❯ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
Añadimos el README.md
vacío al stage (add
) para que git
sea consciente de su existencia y de que queremos seguirlo (add
) y posteriormente salvarlo (commit
)
❯ git add README.md
Consultamos el estado (status
) para ver qué ha cambiado y comprobamos que, efectivamente, git
ya sigue a README.md
❯ git status
On branch main
No commits yet
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: README.md
Salvamos (commit
) nuestra primera versión con un mensaje
❯ git commit -m "Initial commit"
[main (root-commit) 3838d0e] Initial commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
Volvemos a comprobar el estado (status
) del repositorio y vemos que no hay nada que hacer
❯ git status
On branch main
nothing to commit, working tree clean
Consultamos el historial de versiones actual (log
) y comprobamos que tenemos nuestra primera versión (commit
).
❯ git log
3838d0e Initial commit (David G Chaves, 3 minutes ago)
NOTA: En mi caso salen menos datos que en el vuestro porque tengo la siguiente linea en mi .gitconfig
👇 (que podeis añadir al vuestro, si quereis)
[format]
pretty = %C(yellow)%h%Creset %s %C(red)(%an, %cr)%Creset
👀 O usar el comando siguiente para que lo haga por vosotros 👇
❯ git config --global format.pretty "%C(yellow)%h%Creset %s %C(red)(%an, %cr)%Creset"
Insertamos un título al README
❯ echo "# first-steps-with-git-and-github-ies-illa-de-saron" >> README.md
Comprobamos que ha cambiado el contenido del README
❯ cat README.md
# first-steps-with-git-and-github-ies-illa-de-saron
Volvemos a comprobar el estado (status
) del repositorio y vemos que nos dice que hay cambios listos para enviar al stage
(add
)
❯ git status
On branch main
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: README.md
no changes added to commit (use "git add" and/or "git commit -a")
Añadimos los cambios selectivamente (add -p
)
❯ git add -p
diff --git a/README.md b/README.md
index e69de29..82f4a78 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+# first-steps-with-git-and-github-ies-illa-de-saron
Stage this hunk [y,n,q,a,d,e,?]? y
Volvemos a comprobar el estado (status
) del repositorio y vemos que ahora sí hay cambios listos para ser salvados (commit
).
❯ git status
On branch main
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: README.md
Salvamos (commit
) nuestra segunda versión con un mensaje
❯ git commit -m "Add title to README"
[main 6678c20] Add title to README
1 file changed, 1 insertion(+)
Volvemos a comprobar el estado (status
) del repositorio y vemos que no hay nada que hacer
❯ git status
On branch main
nothing to commit, working tree clean
Consultamos el historial de versiones actual (log
) y vemos que hay 2 versiones (o commit
s) de nuestro repositorio.
❯ git log
6678c20 Add title to README (David G Chaves, 68 seconds ago)
3838d0e Initial commit (David G Chaves, 14 minutes ago)
Todos estos cambios han ocurrido en nuestra máquina local, GitHub no sabe nada todavía. Ahora vamos a enganchar nuestro repositorio local con el repositorio creado antes en GitHub.
Añadimos un remoto (remote
) con la dirección de nuestro repositorio en GitHub
❯ git remote add origin git@github.com:davidgchaves/first-steps-with-git-and-github-ies-illa-de-saron.git
En el código de 👆, en vuestro caso cambiará el repositorio git@github.com:davidgchaves/first-steps-with-git-and-github-ies-illa-de-saron.git
que será algo así como git@github.com:USUARIO/NOMBRE_REPO.git
.
Tras añadir el remoto (remote
), nuestra máquina local ya sabe a dónde enviar los cambios. Es decir, ya sabe cual es el repositorio de Github. De hecho, la convención que se usa es llamar origin
al repositorio de Github. Por eso el
origin git@github.com:USUARIO/NOMBRE_REPO.git
Ahora vamos a enviar los datos a Github (push
) por primera vez. Necesitamos crear una rama main
, antes.
❯ git branch -M main
Ahora sí que podemos enviar a Github.
❯ git push -u origin main
Enter passphrase for key '/Users/davidgchaves/.ssh/id_ed25519':
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 488 bytes | 488.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To github.com:davidgchaves/first-steps-with-git-and-github-ies-illa-de-saron.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
👆 Como yo tengo un passphrase
para mi clave ssh
, me la pide. En clase NO establecimos ningún passphrase
por comodidad, por lo que no debería pedírosla. Aun así ES RECOMENDABLE establecer un passphrase
para las claves ssh
.
Si ahora voy a la dirección de Github en la que está mi repositorio debería cambiar de esto 👇
a esto otro 👇
A partir de ahora cada vez que queramos enviar los datos a Github bastará con git push
a secas.
❯ git push
Clonar un repositorio de Github
Vamos a clonar un repositorio cualquiera, por ejemplo el dotfiles-example 👽
Como paso previo, nos situaremos en el directorio raiz correcto
❯ cd ~/projects
A continuación buscaremos y copiaremos la dirección de clonado ssh en la interfaz gráfica de github
para finalmente proceder al clonado
❯ git clone git@github.com:davidgchaves/dotfiles-example.git
Cloning into 'dotfiles-example'...
Enter passphrase for key '/Users/davidgchaves/.ssh/id_ed25519':
remote: Enumerating objects: 15, done.
remote: Total 15 (delta 0), reused 0 (delta 0), pack-reused 15
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (1/1), done.
Ahora podemos acceder localmente al repositorio y consultar lo que queramos
❯ cd dotfiles-example/
❯ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
❯ git log
013daa3 Update README.md (davidgchaves, 2 years, 5 months ago)
3572c0b Add intructions for generating ssh keys (David G Chaves, 2 years, 5 months ago)
3346b9c Add README with instructions (David G Chaves, 2 years, 5 months ago)
e420514 Add gitconfig file (David G Chaves, 2 years, 5 months ago)
47cf7cf Initial commit (David G Chaves, 2 years, 5 months ago)