Git es un software de control de versiones diseñado para trabajar en equipo o individualmente.
Lo primero que debemos hacer es crear un usuario y email para que nos identifiquen
Sabes que es un repositorio local?
Este es el directorio de trabajo, donde se encuentran todos nuestros archivos, aquellos que editamos y modificamos.
Crea un nuevo repositorio de Git. Puede utilizarse para convertir un proyecto existente y sin versión en un repositorio de Git o inicializar un nuevo repositorio vacío
Puedes clonar un repositorio con git clone [url]
. Por ejemplo, si quieres clonar la librería de Git llamada libgit2 puedes hacer algo así
Con git add
podemos seleccionar el archivo para realizar un commit explicando el cambio hecho en el.
El comando git commit
crea una instantánea de los cambios preparados en ese momento del proyecto. Las instantáneas confirmadas pueden considerarse como versiones "estables" de un proyecto:
Cada vez que se modifique un archivo que forma parte del repositorio, este aoarecera como pendiebnte para realizar un commit.
Después de haber hecho varias confirmaciones, o si has clonado un repositorio que ya tenía un histórico de confirmaciones, probablemente quieras mirar atrás para ver qué modificaciones se han llevado a cabo.
Para poder colaborar en cualquier proyecto Git, los repositorios remotos son los que se encuentran alojados en un servidor a los que se pueden subir cambios y de los cuales se puede bajar los cambios mas reciente.
Para poder ver los remotos que se tiene configurados se debe de ejcutar el comando
Pero también se puede añadir mas de un remoto, esto para trabajar en dos o mas repositorios a la vez ,k es comando para agregar remotos es el siguiente
Para confirmar que se agrego volvemos a presionar el comando para ver remotos.
Tambien se pueden boorraren caso de que ya no usemos ese remote, con el siguiente comando
Con fetch puedes bajar cualquier cambio que se haya hecho y no este en tu equipo , normalmente se usa para bajr alguna rama que no tengas en tu proyecto pero si exista en el remote
Cuando tienes un proyecto que quieres compartir o has modificado algo de ese mismo proyecto, debes enviarlo a un servidor para que se quede alojado y las demás personas tengan acceso a esos cambios
Similar a el comando fetch se usa para traer y combinar automáticamente la rama remota con tu rama actual.
Cuando se trabaja en un proyecto de git normalmente existen dos o más líneas de desarrollo aisladas, una para una función pequeña y otra para una función más extensa. Al desarrollarlas en ramas, no solo es posible trabajar con las dos de forma paralela, sino que también se evita que el código dudoso se fusione con la rama maestra.
Para aprender mas acerca del workflow de git lee este articulo
Para poder ver todas las ramas existentes en el proyecto podemos usar
Normalmente en la rama que estámos esta de un color diferente
Al estar dentro del workflow de git podemos cambiar entre ramas para poder trabajar en característica diferentes
Siempre que una rama ya no sea necesaria o ya se haya fusionado con otra , se puede borrar con el siguiente comando.
Cuando trabajamos en ramas paralelas y estas ya cumplen con la característica en que se estaba trabajando, llega el momento de hacerla parte de la rama principal
El merge debe de ser dentro de la rama en la que estemos, por ejemplo queremos hacer merge de la rama dev dentro de master, debemos asegurarnos que estamos en la rama master e introducir el siguiente comando
Una de los principales características que tiene git es poder regresar a una versión estable, esto es por si a la hora de trabajar en una nueva característica hay algún fallo y ya se hizo el comit y no se sabe en que momento empezó a fallar, existe una buena solución a esto.
y es asi como se vuelve a un version anterior de git
Siempre nos podemos equivocar cuando creamos un comit, tal vez una mala redacción, archivos incorrectos, etc. Siempre podemos deshacer ese comit con este comando
Hacemos que la rama actual retroceda a la versión que le indicamos. En este caso le decimos HEAD~1 que significa: queremos volver a la versión inmediatamente anterior a la que estamos ahora, si cambiamos el numero sera los pasos en los que retrocedemos
Existe otra alternativa la cual es
Esto eliminará los cambios de los que habíamos hecho commit anteriormente
Normalmente en el desarrollo de un proyecto hay algunas dependencias como puede ser en el caso de nodeJS la carpeta node_modules o los archivos .exe de c++, estos archivos o dependencias pueden ocasionar problemas dentro del servidor ya que normalmente esas carpetas pueden llegar a pesar GB y no son necesarias o simplemente no queremos que se incluyan en el repositorio remoto y que solo existan de forma local.
Te preguntaras y ¿que comando hace eso?
No hay algún comando que haga eso, es un archivo que se llama .gitignore
Este archivo es de texto por lo cual podemos editarlo con cualquier editor de texto plano, dentro de este archivo podemos especificar carpetas, archivos, extensiones de archivos, etc.
Para mayor informacion lee este articulo
SSH o Secure Shell, es un protocolo de administración remota que le permite a los usuarios controlar y modificar sus servidores remotos a través de Internet a través de un mecanismo de autenticación.
para generar nuestra ssh
Vamos a hacer un ejercicio completo con git.
Vamos a instalar git
Una vez que tengamos el instalador , no importa si es para Windows, mac o linux , todos esos nos haran lo mismo lo cual es instalar git.
Una vez que tengamos linux instalado lo comprobaremos en linux y mac con el siguiente comando
si estamos en windows podemos checarlo en panel de contro o escribir en el menu g
Antes de emepezar , abre una terminal en linux o mac, en windows abre el git bash.
Ahora falta identificarnos con git, para eso
podemos checar la seccion Identidicarse
Para ver que usuario y email tenemos podemos verlo con el siguiente comando
Creamos un directorio en el escritorio que se llame gitcurs, una vez que tengamos esa carpeta , abrimos algun IDE y la arrastramos a dicha ventana del IDE
En algunas ocaciones los IDE tiene una terminal integrada , per si en dado caso de que no haya aolguna terminal procedemos a abrir alguna del sistema , esto en linux o mac , una vez que estemos dentro podremos inicar el repositorio de git con
Una vez que tengamos ese comando , en nuestro directorio nos creara unos archivos ocultos , para verlos usaremos
Si vemos en la termianl que tenemos un archivo .git significa que hemps creado exitosamente nuestro repositorio local.
Crearemos un archivo ejemplo.js y checaremos el status de nuestro repositorio con
Nos aparecera algo asi
El color rojo en un archivo significa que el archivo esta sin seguimiento y se han gecho cambios que no estan registrados dentro del repositorio.
Para deja un comit de un cambio primero debemos añadir ese archivo al cinjunto de cambios que estan esperando para ser documentados, para dicha accion ejecutamos el sigueinte comando
Ahora volvemos checar el estatus de nuestro repositorio ,nos deberia aparecer algo asi
El color verde significa que nuestro archivo esta ñisto para documentar
Para realizar el comantario respectivo , introduciremos el siguiente comando
Se nos abrira un editor de texto plano en el que podremos escribir un comentario , se recomienda que los comentarios sean precisos y no muy largos
una vez que hayamos hecho el commit lo gaurdaremos y volveremos a ver nuestro estatus, ahora nuestro estatus nos dira que no hay nada por hacer ahora
Podemos ver todo el historial de cambios usando
En ese historial biene con fecha . nombre ,descripcion y un numero de commit , ese numero sera importante despues
Ahora crearemos un repositorio en linea
para eso nos dirgiremosa Git Lab
Crearemos un nuevo repositorio en blanco, el nombre puede ser cualquiera , lo importante es que desmarques la casilla que dice Initialize repository with a README
Una vez creado el repositorio podremos seleccionar en la parte de clone , copiamos el url en la parte que dice HTTP , esa url la añadiremos a nuestro repositorio localmente
para ver todos los repositorios remotos que tenemos usaremos el siguiente comando.
nos daldra vacio por defecto ya que estamos en un repositorio que creamos localmente , para añadir el remoto usaremos el suignete comando
El nombre puede ser cualquiera pero el url sera el que copiamos de nuestro repositorio en Gitlab
Volveremos a ver nuestro listado de remotesy ahora aparecera nuestro remote con el nombre que le hayamos dado
Una vez que tengamosnuestron repositorio remoto añadido podemos ejecutar ek siguiente conmando para subir nuestros archivos a dicho servidor , nos pedira nuestra contraseña para hacerlo
Ese cambio severa reflejado en nuestro repositorio remoto
Para evitarnos estar estar digitando nuestra contraseña a cada rato usaremos una ssh, esto nos ayudara a identificarnos mas rapido , usaremos el siguiente comando
Esa ssh key se genera en el directorio HOME/USER
Desde linux podemos ir en linux y mac con cd $HOME
en windows lo podemos encontrar como (/c/Users/you/.ssh/)
Una vez en esa ruta desde consola digitaremos el comando
ls -a esto para ver los archivos ocultos
Sera un total de dos archivos llamdos id_rsa y id_rsa.pub
El que a nosotros nos interesa es id_rsa.pub , abrimos ese archivo y copiamos su contenido , una vez copiado iremos a gitlab y en preferences nos saldra un menu en la parte izquierda , en ese menu hay una seccion que se llama ssh keys
Dentro de esa seccion en la parte que nos pide una key pegaremos lo que copiamos de id_rsa.pub
y guardaremos , asi es como se agrega el ssh key para git
Como hemos agregado nuestra ssh key debemos modificar el remote por que ese esta con un metodo http, asi que borraremos nuestro remote de prueba
Ahora añadiremos el nuevo copiando por el metodo ssh, le pondremos prueba2 y ahora podremos hacer push sin ningun problema
Siempre que trabajmos en git podemos tener ramas , estas ramas trabajan en paralelo con la rama principal pero sin interferir directamente , en estas ramas se puede trabajar algunas caracteristicas, en nuestro caso crearemos una rama que se llama dev
pero primero veremos lña listas de rama que hay con el comando
Veremos que solo existe una rama llamda *Master
Esta rama es la principal de todas, el asterisco es en que rama nos encontramos actualmente , ahora si crearemos la rama dev
volveremos a listar las ramas y ahora aparecera
Nosotros nos encontramos en la rama master y queremos ir a la rama dev asi que para dirigirnos sera con el siguiente comando
Nos aparecera un mensaje de que hemos cambiado de rama
Vamos a modificar nuestra rama dev , creando un nuevo archivo , a ese nuevo archivo le damos un commit y subimos la nueva branch a nuestro repositori. Podremos ver la nueva rama en la seccion de branches
Cuando una caracteristica este lista , la debemos integrar con la rama principal , para esto dbemos estar en la rama donde deseamos que se haga la fusion , en nuestro caso queremos fusionar dev con master asi que nos vamos a la rama master, la fusion la haremos con el siguiente comando
si ya no usamos esa branch la podemos borrar con
Si queremos volver a una version anterior podemos usar el hisotorial de cambios para póder saber a que version queremos volver, recordemos que cada comit tiene un numero , asi que copiaremos dicho numero y con el siguiente comando volveremos a una version anterior
y asi volveremos a nuestra version estable
En caso de que hayamos hecho algun commit por error siempre podemos des hacer ese commit con
El -1 significa el numero de pasos que retrocederemos , si ese numero se cambia , sera losnumeros de pasos que retrocederos
Hay cosas que no queremos que se incluyan para esto existe .gitignore , esto no es un comando es un archivo que nos ayudara a no incluir cosas cuando hacemos un commit
crearemos un archivo llamdo .gitignore
Lo abrimos y escribimos rutas relativas o absolutas de carpetas o nombres de archivos
Ejemplo
Se nos creara un package.json
Esto nos creara una carpeta llamda node_modules
Esta carpeta es incesesaria para el remote ya qu pueden llegar a pesar GB y puede oacisonar errores , asi que la incluiremos , pero antes checa el estatus del repositorio , nos debe de aparecer algo asi
Ahora si excluiremos node/modules , unicamnte pondremos su ruta relativa dentro del .gitignore ya que estan en el mismo nivel, una vez añadido volveremos a checar nuestro estatus y saldra asi.
Como vemos ya no esta node_modules para incluirse asi que si funciona nuestro ignore, ahora excluiremos a todos los archivos que tengan extension .json
esto con el siguiente texto *.json , el asterisco es para decir todos los que termine con .json , volvemos a checar el estatus y debe salir esto
Tu puedes modificar cada cosa en el ignore para saber que cosas incluir y cuales no.