├── .gitignore ├── README.md ├── css └── estilos.css ├── img ├── agregando_key.png ├── crear_nueva_key_ssh.png ├── errores2.png ├── git_log_all_graph_decorate.png ├── git_pull_origin_master.png ├── git_push_origin_master.png ├── git_remote_v.png ├── github_logo.png ├── identificador_ssh_key.png ├── llave_publica.png ├── ls-al.png ├── proyectoGitHub.png ├── revisemos-faz.png ├── screenshot_error_merge.png ├── screenshot_error_merge_blocNotas.png ├── screenshot_error_merge_code.png └── url_repo_github.png └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gitCommands 2 | gitCommands es un proyecto creado en el curso de Git y Github de Platzi. En el, describo los comandos más usados y su uso. 3 | 4 | Se explica como trabajar con github y dar a conocer el flujo de trabajo para un repositorio en Git **(próximamente)**. 5 | 6 | # Ventajas de gitCommands 7 | El usar y practicar con git constantemente te ayudará comprender al 100% el flujo de trabajo de git y a conocer los comandos necesarios para trabajar con el. 8 | 9 | Aunque a veces, por no estar trabajando en proyectos que usen git, o simplemente no tener la necesidad de usarlo **(cosa que está mal, siempre deberías tener un repositorio para tu código)** puedes consultar este repositorio y recordar dichos comandos y cuál era su función. 10 | 11 | Recuerda que: 12 | > "La práctica hace al maestro, pero en el proceso, podemos usar gitCommands y aprender más rápido" 😜 13 | 14 | # ¿Cómo contribuir? 15 | Al ser un repositorio público, puedes obtener este proyecto, realizarle cambios y dejar un pull request para implementar las mejoras que desees. 16 | 17 | Para contribuir debes: 18 | 1. Hacer un Fork de este proyecto para obtenerlo en tu cuenta de GitHub. https://github.com/avasquez-ve/gitCommands.git 19 | 1. Hacer referencia desde tu equipo al repositorio ubicado en tu cuenta de GitHub: 20 | **HTTPS** 21 | ``` 22 | git clone https://github.com/[tu_usuario]/gitCommands.git 23 | ``` 24 | 25 | **SSH** 26 | ``` 27 | git clone git@github.com:[tu_usuario]/gitCommands.git 28 | ``` 29 | donde **[tu_usuario]** hace referencia a tu nombre de usuario en GitHub. 30 | 1. Realizar un `git pull origin master` para obtener la última versión desde el repositorio en tu cuenta 31 | 1. Crear una rama llamada `upstream` la cual debe hacer referencia al repositorio principal https://github.com/avasquez-ve/gitCommands.git 32 | 33 | **HTTPS** 34 | ``` 35 | git remote add upstream https://github.com/avasquez-ve/gitCommands.git 36 | ``` 37 | 38 | **SSH** 39 | ``` 40 | git remote add upstream git@github.com:avasquez-ve/gitCommands.git 41 | ``` 42 | Esto para efectos de actualizar tu repositorio local con respecto al repositorio principal. (Puedes pasar tiempo sin hacer algo en el proyecto y otras personas podrían avanzar, recuerda que siempre debes tener la última versión antes de hacer un pull request) 43 | 1. Realizar los cambios que requieras y hacer el commit 44 | 1. Hacer un push a tu `origin master` 45 | 1. Realizar un pull request desde GitHub al repositorio principal. 46 | -------------------------------------------------------------------------------- /css/estilos.css: -------------------------------------------------------------------------------- 1 | /* Style the header with a grey background and some padding */ 2 | header { 3 | overflow: hidden; 4 | background-color: #f1f1f1; 5 | padding: 20px 10px; 6 | border-radius: 5px; 7 | height: 80px; 8 | width: 98%; 9 | display: block; 10 | } 11 | 12 | 13 | header span { 14 | padding-left: 10px; 15 | top: 3px; 16 | font-size: 30px; 17 | font-weight:bolder; 18 | font-family:'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; 19 | text-transform: uppercase; 20 | display: inline-flex; 21 | } 22 | header img { 23 | 24 | width: 100px; 25 | vertical-align: middle; 26 | } 27 | body { 28 | font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; 29 | } 30 | .center { 31 | margin: 0 auto; 32 | } 33 | 34 | h1 { 35 | margin-top: 30px; 36 | margin-left: 3%; 37 | color: rgb(231, 53, 53); 38 | font-size: x-large; 39 | font-weight: 600; 40 | text-transform: uppercase; 41 | } 42 | ul { 43 | margin-left: 3%; 44 | margin-right: 3%; 45 | line-height : 25px; 46 | font-size: small; 47 | } 48 | 49 | p { 50 | margin-left: 3%; 51 | margin-right: 3%; 52 | } 53 | .fixed { 54 | position: fixed; 55 | top: 0; 56 | right: 0; 57 | cursor: pointer; 58 | z-index: 9999; 59 | display: inline-table; 60 | margin-right: 10px; 61 | margin-right: 20px; 62 | padding: 10px; 63 | text-align: center; 64 | width: 50px; 65 | border-radius: 20px; 66 | height: auto; 67 | background-color: rgb(231, 53, 53); 68 | font-family:Verdana, Geneva, Tahoma, sans-serif; 69 | color: white; 70 | font-weight:100; 71 | font-size: 10px; 72 | text-transform: uppercase; 73 | 74 | } 75 | 76 | .changeWeb { 77 | size-adjust: auto; 78 | } 79 | 80 | 81 | #showCommand { 82 | cursor: pointer; 83 | } 84 | 85 | -------------------------------------------------------------------------------- /img/agregando_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/agregando_key.png -------------------------------------------------------------------------------- /img/crear_nueva_key_ssh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/crear_nueva_key_ssh.png -------------------------------------------------------------------------------- /img/errores2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/errores2.png -------------------------------------------------------------------------------- /img/git_log_all_graph_decorate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/git_log_all_graph_decorate.png -------------------------------------------------------------------------------- /img/git_pull_origin_master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/git_pull_origin_master.png -------------------------------------------------------------------------------- /img/git_push_origin_master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/git_push_origin_master.png -------------------------------------------------------------------------------- /img/git_remote_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/git_remote_v.png -------------------------------------------------------------------------------- /img/github_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/github_logo.png -------------------------------------------------------------------------------- /img/identificador_ssh_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/identificador_ssh_key.png -------------------------------------------------------------------------------- /img/llave_publica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/llave_publica.png -------------------------------------------------------------------------------- /img/ls-al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/ls-al.png -------------------------------------------------------------------------------- /img/proyectoGitHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/proyectoGitHub.png -------------------------------------------------------------------------------- /img/revisemos-faz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/revisemos-faz.png -------------------------------------------------------------------------------- /img/screenshot_error_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/screenshot_error_merge.png -------------------------------------------------------------------------------- /img/screenshot_error_merge_blocNotas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/screenshot_error_merge_blocNotas.png -------------------------------------------------------------------------------- /img/screenshot_error_merge_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/screenshot_error_merge_code.png -------------------------------------------------------------------------------- /img/url_repo_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avasquez-ve/gitCommands/a38a23c46d37af01779e203c67c38ab6a06fd183/img/url_repo_github.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Comandos y uso Git 7 | 8 | 9 |
10 | Logo de git 11 | Comandos de GitHub 12 |
13 | 14 |
Vista Nocturna
15 |

Comandos más usados

16 | 34 | 35 |

Comando de consola útiles

36 |

Esta sección es un extra, no tiene que ver directamente con Git, pero puede apoyar de una u otra manera tu repositorios.

37 | 40 | 41 |

Comandos importantes

42 |

Estos comandos se separan ya que tienen funciones muy importantes.

43 | 52 |
53 | 54 |

Comandos en ramas

55 |

Estos son los comandos aplicados para manejarse entre ramas, crear nuevas ramas, etc.

56 | 89 |
90 | 91 |

Repositorios remotos - GitHub

92 |

Conoceremos como poder conectar nuestro repositorio local con algún repositorio remoto, subir nuestros cambios a dicho repositorio, obtener los cambios desde el repositorio y mucho más.

93 |

Para este caso de prueba utilizaremos el repositorio remoto más conocido del mundo, GitHub.

94 |
    95 |
  1. Primero, debemos crearnos una cuenta en GitHub y crear un nuevo repositorio. Preferiblemente, debemos crear el archivo README ya que a través de el podremos indicarle a otros desarrolladores de que va nuestro código.

  2. 96 |
  3. Luego de crear el repositorio, Github nos dará la url del mismo, esta la utilizaremos para agregar este origen remoto desde nuestro repositorio local. Se debe copiar la ruta HTTPS que github nos dió:

    url de nuestro repositorio remoto

  4. 97 |
  5. Usar el comando git remote add origin urlRepositorioRemoto con esto, estaremos agregando la referencia del repositorio remoto a nuestro repositorio en local. Posterior a esto, la consola de git no arrojará ningún mensaje, pero si usamos el comando git remove -v podremos visualizar el repositorio remoto al que hacemos referencia actualmente. 98 |

    99 | git remote -v para ver la referencia del repositorio remoto 100 |

    101 | Te dejo la url de este mismo repositorio para que puedas probar: https://github.com/avasquez-ve/gitCommands.git

  6. 102 |
  7. Como ya tenemos la referencia del repositorio remoto, ahora debemos obtener la historia que se encuentre en dicho repositorio, esta acción se debe realizar siempre antes de enviar los cambios desde el repositorio local.

    Si el repositorio remoto es diferente a nuestro repositorio local, es probable que Git nos de un warning con el mensaje "refusing to merge unrelated histories" esto quiere decir que no puede hacer la fusión debido a que las historias de los dos repositorios son diferentes. Para forzar esta acción y poder obtener la historia del repositorio remoto debemos usar el comando git pull origin master --allow-unrelated-histories para permitir unir ambas historias.
  8. 103 |

    104 | git pull origin master, mensajes de advertencia 105 |

    106 | 107 |
  9. Con el comando ls -al podremos ver el archivo README creado desde GitHub. Y al ejecutar git log también veremos el commit hecho en GitHub para dicho archivo. 108 |

    109 | comando ls -al. Usado para visualizar en forma de lista los archivos visibles y ocultos de un directorio 110 |

    111 |
  10. 112 |
  11. Ahora, para subir los cambios locales al repositorio, debemos usar el comando git push origin master, con esto, ya nuestros cambios locales estarán dentro del repositorio remoto. Recordar siempre que este comando lo debemos ejecutar desde la rama master para no generar conflictos.
  12. 113 |

    114 | comando git push origin master. Usado para subir los cambios hacia un repositorio remoto 115 |

    116 |

    Así quedó nuestro repositorio remoto en GitHub luego de agregar los cambios desde el repositorio local

    117 |
    118 | repositorio en GitHub 119 |
    120 |
121 | 122 |

Configurar tus llaves SSH en local

123 |

Aprenderemos como usar las llaves SSH para conectarnos a GitHub usando SSH y dejar a un lado HTTPS

124 |

Para hacer nuestra conexión aún más segura, podemos usar llaves encriptadas, con las cuales enviamos nuestros datos cifrados. Dichos datos solo podrán ser decifrados con una llave pública que compartiremos con GitHub.

125 |
    126 |
  1. Primer paso: Generar las llaves SSH con el comando
    ssh-keygen -t rsa -b 4096 -C "tu@email.com"
    debemos usar el mismo email que usamos para Github. Tomar en cuenta que luego de apretar enter, nos va a sugerir agregarle una contraseña a dicha llave para hacerla aún más segura. Este paso es opcional, si no queremos agregarle una contraseña solo aprietas ENTER.

  2. 127 |
  3. Las llaves se guardaran en una carpeta oculta llamada .ssh donde tendremos la llave pública id_rsa.pub y la privada id_rsa NOTA: La llave privada jamás se debe compartir con nadie ni con ningún otro dispositivo.

  4. 128 |
  5. Segundo paso: para terminar de configurar las claves, debemos comprobar que el servidor se encuentre activo, para esto usar el comando
    eval $(ssh-agent -s)
    lo cual nos debería retornar un mensaje Agent pid numeroAleatorio

  6. 129 |
  7. Tercer y último paso: ahora, solo debemos agregar al servidor nuestra llave privada, para esto, usar el comando
    ssh-add ruta-donde-guardaste-tu-llave-privada
    Y listo, ya tendremos configurada nuestra llave privada para poder conectarnos a través de SSH con GitHub

  8. 130 |
131 |

La documentación oficial de GitHub para configurar las llaves SSH para Windows, Linux y Mac, se encuentra en:

https://docs.github.com/es/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent 132 | 133 |

Conectarnos a Github a través de SSH

134 |

Luego de haber creado y configurado nuestra llave privada. Debemos configurar nuestra llave pública (la única que podemos compartir) con Github. Es importante tener en cuenta que debemos realizar los pasos anteriores, de lo contrario, no podremos continuar con este paso.

135 |
    136 |
  1. Como primer paso: debemos agregar nuestra llave pública a nuestra cuenta de Github. Para eso debemos copiar el contenido de nuestra llave publica, ubicada en el archivo id_rsa.pub

  2. 137 |
  3. El segundo paso es: Ingresar en nuestra cuenta de Github y dirigirnos a la configuración y posteriormente a la gestion de KEYS SSH
    url: https://github.com/settings/keys
    Debemos hacer click en New SSH Key
    boton crear nueva key ssh
    y luego agregar como título, el pc que tendrá asignado dicha key publica, esto es para poder identificarlo, ya que podemos tener varios equipos conectados por SSH a nuestros repositorios. Al finalizar, hacer click en Add SSH KEY
    agregando key ssh

  4. 138 |
  5. Ahora podremos ver que nuestra key SSH se agregó correctamente
    ver key agregada

  6. 139 | 140 |
  7. Como siguiente paso, debemos configurar nuestro repositorio local para dejar de usar HTTPS y empezar a usar SSH con nuestras nuevas keys. Para esto, debemos ir a nuestro repositorio y ejecutar el comando
    git remote set-url origin url-ssh-del-repositorio-en-github
    Con esto estaremos cambiando la url del repositorio en github. Podemos comprobar la nueva url usando git remove -v
  8. 141 |
  9. Ahora puedes hacer un git pull origin master confirmar los mensajes, realizar cambios en tu repositorio local y hacer un git push origin master
  10. 142 |
143 | 144 |

Tags y versiones en Git y GitHub

145 |

Los tags nos permiten asignar versiones a los commits con cambios más importantes o significativos en nuestro proyecto. A continuación, se presentan los comandos para trabajar con las etiquetas:

146 | 152 | 153 |

Usando Rebase

154 |

Rebase se utiliza para unir los cambios que tengamos en una rama con nuestra rama master y no dejar rastros de la existencia de dicha rama creada.

155 |

El rebase es útil, por ejemplo, si estamos realizando arreglos de un bug y no se desean mostrar estos cambios como tomados de una rama, si no como parte del flujo normal de la aplicación.

156 |

Rebase se encarga de ajustar los cambios al momento en que se realizaron y hacer un merge desde el primer commit, no desde el último (como funciona normalmente un flujo en git)

157 | 164 | 165 |

Usando Git Stash

166 |

Git stash es muy útil cuando tienes cambios que no deseas realizarle commits aún, o para realizar pruebas, experimentos que no requieran o no quieras crear una rama para poder visualizarlos

167 |

El stash es una forma de almacenar tus cambios pendientes para luego poder obtenerlos y hacerles commit, incluso puedes crear una rama con esos cambios pendientes, hacerle commit en la nueva rama y luego realizar un merge en master.

168 |

Pasos para usar Stash

169 | 177 | 178 |

Git Clean

179 |

Este comando es utilizado para eliminar archivos que no forman parte de nuestro directorio de trabajo, archivos como .logs, resultados de una compilación, etc.

180 | 186 | 187 |

Git cherry pick

188 |

Existe un mundo alternativo en el cual vamos avanzando en una rama pero necesitamos en master uno de esos avances de la rama, para eso utilizamos el comando git cherry-pick IDCommit.

189 |

cherry-pick es una mala práctica porque significa que estamos reconstruyendo la historia.

190 | 194 | 195 |

Git amend

196 |

A veces hacemos un commit, pero resulta que no queríamos mandarlo porque faltaba algo más.

197 |

Amend remienda nuestro error y los cambios que hicimos nos los permite agregar al commit más reciente.

198 | 201 | 202 |

Magia para desarolladores

203 |

Si has llegado hasta aquí y ya manejas de memoria los principales comandos de git, los comandos para las ramas,sabes hacer un merge sin caer en la locura y trabajar con repositorios remotos.

204 |

Te dejo un buen comando de git que te ayudará a ver fácilmente tu historial de commits.

205 |

¡OJO! haz clic en el siguiente enlace solo si REALMENTE manejas y comprendes los comandos anteriores y el flujo de Git, de lo contrario, REGRESA OTRO DÍA 👺

206 |

Visualizar el comando

207 | 209 | 210 | 317 | 318 | 319 | --------------------------------------------------------------------------------