Git Instalación y configuración en Windows
Tutorial Git en (Español) https://wiki.archlinux.org/title/Git_(Espa%C3%B1ol)
El libro completo de Pro Git, escrito por Scott Chacon y Ben Straub y publicado por Apress, está disponible aquí
https://git-scm.com/book/es/v2/
Qué es Git ?
Es Sistema de control de versiones que permite trabajar en grupo, cada desorrollador que esta en el proyecto puede agregar en el historial de Git los trabajos que esta haciendo , cambios y actualizaciones.
Este Sistema de control de versiones tiene un historial de todo lo que se ha hecho y quien lo a hecho.
Git un sistema de control de versiones que registra los cambios realizados sobre un archivo durante su desarrollo.
¿Qué es el control de versiones?
El control de versiones, también conocido como "control de código fuente", es la práctica de rastrear y gestionar los cambios en el código de software.
Los sistemas de control de versiones son herramientas de software que ayudan a los equipos de software a gestionar los cambios en el código fuente a lo largo del tiempo.
El software de control de versiones realiza un seguimiento de todas las modificaciones en el código. Si se comete un error, los desarrolladores pueden ir hacia atrás en el tiempo y comparar las versiones anteriores del código para ayudar a resolver el error.
Instalación Git para windows:
Descargar el instalador desde cualquiera de estos dos enlaces:
- Desde la url https://gitforwindows.org
- O desde la url https://git-scm.com/downloads
Comprobar tu Configuración de git
Si quieres comprobar tu configuración, puedes usar el comando git config --list
para mostrar todas las propiedades que Git ha configurado:
Abre tu ventana de comandos de windows
Como abrir la ventana de comandos de windows : ir a Boton Inicio / en el cuadro Buscar escribe CMD y clic para abrir
$ git config --list
Trabajar con Github y Git
Github
GitHub es un repositorio o lugar de almacenamiento de todo el codigo de nuestros proyectos y funciona gracias a Git.
y es el lugar donde vamos a acceder a todas las versiones historicas de nuestros archivos, es decir va crear copias historicas de todos los cambios realizados de nuestros archivos en todo el desarrollo de nuestro proyecto.
Github existe porque hay una aplicacion de control de versiones llamado Git , todo el sitio de Github esta basado alrededor de como funciona Git.
Como Funciona Git
Git funciona al principio leyendo un repositorio de codigo local, es decir una carpeta que contiene el codigo de tu proyecto de tu computadora, lo que hace simplemente es copiar tu codigo a otro lugar como puede ser en el servidor de Github , que sirve de almacenamiento de nuestro codigo.
La primera vez cuando subimos un repositorio a Github todos los archivos de nuestra carpeta de nuestro proyecto que esta en nuestra computadora se copia todo igual a Github pero eso pasa la primera vez , porque despues cada vez que hacemos un cambio en nuestra carpeta local vamos a tener la poibilidad simplemente de subir esos cambios y no todo el proyecto nuevamente,
y de este modo Github lo que va hacer es en vez de reemplazar de nuevo todos los archivos que estaban en nuestra computadora que ya fueron subidos a su servidor la primera vez, va a crear una nueva version de los archivos modificados y va mantener un historico , de tal manera vamos tener la posibilidad de volver a cualquier punto de tiempo y a cualquiera de las versiones anteriores de nuestro proyecto.
Escoger la consola de trabajo
Una vez que instalamos Git abrimos cualquier de estos 2 entornos de trabajo para trabajar con Git:
Git Bash
Git Bash es una aplicación para entornos de Microsoft Windows que ofrece una capa de emulación para una experiencia de líneas de comandos de Git.
Git Bash le permitirá usar herramientas MinGW/Linux Bash con Git en la línea de comandos. Todas esas cosas bonitas que se hacen en Linux también las podemos hacer en Windows a través de Git Bash.
Git CMD
Git CMD es como el símbolo del sistema normal de Windows con el comando git. Te permite usar todas las funciones de Git a través de la línea de comandos. Útil si ya está familiarizado con el cmd de Windows y solo trabaja en Windows.
Nota: No hay ninguna diferencia en lo que respecta a los comandos git cuando usas cualquiera de los 2 entornos de trabajo anteriores.
En cambio Git Bash muestra la rama que tengo activada mientras que Git CMD no lo muestra.
Comando Basicos para trabajar con la consola de Git Bash
● ls ⇒ Sirve para "enumerar" el contenido del directorio de trabajo actual. ls equivale a ejecutar DIR en un terminal de host de consola de Windows.
● pwd ⇒ Sirve para imprimir el "directorio de trabajo actual". pwd equivale a ejecutar cd en un terminal DOS (host de consola de Windows). Es la carpeta o ruta en la que reside la sesión de Bash actual.
● cd ⇒ cd es la sigla en inglés de "cambiar de directorio". Se invoca cd con el nombre de un directorio adjunto. Si se ejecuta cd, se cambiará el directorio de trabajo actual de las sesiones del terminal al argumento del directorio que se ha especificado.
● $ git clone <poner enlace del servidor> ⇒ sirve para clonar un repositorio desde el servidor a nuestro repositorio local.
Si hemos clonado (con git clone) nuestro proyecto, ya tendremos definido un repositorio remoto, que por defecto se identifica con el alias origin.
El comando git remote -v nos mostrará todos los repositorios remotos que tengamos definidos.
● $ git branch ⇒ con este comando podemos hacer lo siguiente:
- Saber en que rama estamos.
- CREAR una rama en el repositorio local.
- Eliminar una rama en el repositorio local.
● $ git checkout ⇒ Comando para movernos a otra rama.
● $ git add ⇒ Se usa para agregar archivos al área de preparación.
● $ git commit ⇒ Para confirmar los cambios , creará una instantánea de los cambios y la guardará en el directorio git . Ten en cuenta que los cambios confirmados no llegarán al repositorio remoto.
● git commit -am "poner un comentario" ⇒ en una sola linea agrega y confirma los cambios.
● $ git push ⇒ Para enviar los cambios al servidor de GitHub , se usa para enviar confirmaciones locales a la rama maestra del repositorio remoto.
● $ git merge ⇒ Combinar ramas.
● $ git status ⇒ Muestra la lista de los archivos que se han cambiado junto con los archivos que están por ser preparados o confirmados.
● $ git push --set-upstream origin ⇒ Con este comando Creamos la rama en el Servidor antes habiamo creado la rama en el repositorio local con el comando $ git branch.
● $ git push origin --delete ⇒ Para eliminar una rama en el Servidor.
Configuración global en Git
Lo primero que deberás hacer cuando instales Git es establecer tu nombre de usuario y dirección de correo electrónico. Esto es importante porque los "commits" de Git usan esta información, y es introducida de manera inmutable en los commits que envías.
git config. Establece algunas variables básicas de trabajo, que se trasladarán al archivo de configuración de usuario.
Configuración de Usuario
$ git config --global user.email johndoe@example.com
$ git config --global user.name "John Doe"
Recuerda estas configuraciones se guardan en el archivo de configuración .gitconfig de git
Se modifica el archivo de configuración global de git .gitconfig :
$ cat $HOME/.gitconfig
[user]
name = Peter Pan
email = peter.pan@nuncajamas.com
[color]
ui = true
Configurando Herramienta MELD
Vamos a explicar como configurar Git para que haga uso de la herramienta Meld cuando queramos hacer comparaciones del código (diff) o resolver los conflictos que se presentan cuando fusionamos las ramas (merge).
→ Ir al tutorial herramienta MELD
¿Cómo hago para que Git use el editor de mi elección para los commits?
Configurando Editor Notepad Plus ++
Descargamos el editor de texto Notepad Plus ++
→ Página Oficial https://notepad-plus-plus.org/downloads/
$ git config --global core.editor "'ruta de instalacion/Notepad++'"
#Por defecto la ruta de instalacion es C:\Program Files\Notepad++ ,
quedando asi el comando:
$ git config --global core.editor "'C:\Program Files\Notepad++\notepad++.exe'"
Nota: Al configurar el editor de texto fijate que en la ruta estamos poniendo unas comilllas y dentro de las comillas unas comillas simples.
Para probarlo se puede invocar al comando git commit sin ningun comentario y se abrira el notepap ++ y solo se grava y se cierra para que queden los comentarios gravados.
Configurar el editor en Notepad de Windows
Ahora ya podemos usar el Notepad de Windows para editort de git
[core]
editor = 'C:/Windows/System32/notepad.exe'
Tambien puede usar el comando
git config --global core.editor '"C:/Windows/System32/notepad.exe"'
Para hacer que Visual Studio Code (vscode) sea su editor git predeterminado
git config --global core.editor "code --wait"
Atom como tu editor de git
git config --global core.editor "atom --wait"
Editar archivo de configuración de git
git config --global -e
Para saber cual es el actual editor de commits :
git config core.editor
Caso practico trabajando con GitHub y Git
Vamos a trabajar con la consola Git bash comandos a usar:
- git clone
- git branch → (ver las ramas)
- git status → (ver el estado)
- git add → (Agregar los cambios)
- git commit → (confirmar los cambios)
- git commit -am "poner un comentario" → en una sola linea agrega y confirma los cambios.
- git push → (enviar los cambios al repositorio del servidor)
► Creamos un repositorio en GitHub
→ Ir a la Página oficial de https://github.com/
Posicionarnos en la carpeta local de nuestro proyecto para clonar un repositorio
Estamos en la consola git bash : Para clonar el repositorio del servidor primero debemos ubicarnos en la carpeta de nuestro proyecto donde vamos a trabajar , utilizamos el comando pwd para saber en que directorio estamos , y con el comando CD.. nos movemos entre carpetas hasta posicionarnos en la carpeta local de nuestro proyecto
Otra manera de posicionarnos en la carpeta local de nuestro proyecto es estando en el explorador de windows hacemos click derecho enla carpeta local donde vamos a trabajar y en el menu emergente escogemos git bash here y nos abrira la conola git bash ya posicionado en la carpeta marcada.
► Clonar Repositorio
Clonamos el repositorio a nuestra carpeta local con el comando git clone y el enlace que hemos copiado del servidor
$ git clone poner_enlace_del_servidor
►Saber cuantas ramas tenemos
Con el comando git branch nos muestra cuantas ramas tenemos, la rama actual esta marcada con el simbolo asterisco.
$ git branch
► Sincronizando el repositorio local con el repositorio del servidor
Vamos a crear un archivo en el repositorio local y para que ese archivo se sincronize en el repositorio del servidor seguiremos los siguientes pasos:
► Usamos comando git status
Usamos el comando git status ver el estado del repositorio clonado es decir para comprobar si tenemos una modificacion en la carpeta local.
--> Nos muestra un archivo que no se esta dando seguimiento y nos indica que tenemos un archivo para agregar y nos muestra el archivo en color rojo y nos dice que usemos el comando git add , para darle seguimiento
► Usamos comando git add
Usamos git add (para agregar los cambios)
$ git add nombre_archivo
o podemos usar el siguiente comando:
$ git add .
Al poner el punto le decimos que suba todos los archivos que estan pendientes de un commit.
Usamos nuevamente el comando git status y ya nos indicara que tenemos un nuevo archivo agregado
►Usamos comando git commit
Usamo el comando git commit (para confirmar los cambios).
$ git commit -m "hemos creado un archivo"
Nota:elparametro -m es para enviar un mensaje.
Si nos pide autentificarnos usaremos el comando:
$ git config --global user.email "tucorreo@com"
$ git config --global username "ponertunombre"
Nota: Dentro de cada repositorio clonado esta la carpeta .git que se encuentra oculta, y dentro de esa carpeta esta el archivo config.
Nuevamente usamos el comando status
Esta vez nos pide hacer un git push para enviar los cambios que hemos confirmado al servidor de GitHub.
► Usamos comando git push
Ejecutamos el comando git push para enviar los cambios al servidor de GitHub.
$ git push
Aqui nos pide autentificarnos con usuario y password.
Terminologia:
Repositorio = Es todo proyecto que esta siendo seguido por Git.
Commit = Es cada uno de los cambios registrados en el historial de git, cada unos de los desarroladores manda los commit de los cambios que ha hecho , esto no es automatico el desarrollador tiene que decirle a git los cambios que ha hecho y documentar el porque lo a hecho.
Ramas (branches)= Ramificaciones nuevos caminos que toma el proyecto, es una copia exacta el proyecto pero separada o aislada se trabaja en ese rama y si sale algo mal no se perjudica el proyecto original.... y si todo va bien esa rama la unificas con el proyecto principal y si va mal lo eliminas sin problemas.
Clon = Es una copia exacta del repositorio, cuando un programador se integra a un equipo de trabajo lo primero que tiene que hacer es clonar el repositorio en su equipo local , cada uno de los desarroladores tiene un un clon del repositorio en su equipo local.
Fork = A diferencia de un clon o de una rama , es un proyecto diferente que se crea a apartir de otro , ejemplo las distribuciones e linux todos se basan en el mismo kernel, pero a partir de alli todas toman diferentes caminos.
¿Qué es la rama master? = La rama master es la rama con la que se comienza en cualquier proyecto, y es la que se utiliza como rama principal donde se encuentra el proyecto en su estado final.
Descargar vs Clonar
Al inicio de uso de un sitio como GitHub, si no tenemos ni idea de usar Git, también podemos obtener el código de un repositorio descargando un simple Zip.en la opcion descargar del proyecto que estamos trabajando.
Sin embargo, descargar un repositorio así, aunque muy sencillo no te permite algunas de las utilidades interesantes de clonarlo, como:
- No crea un repositorio Git en local con los cambios que el repositorio remoto ha tenido a lo largo del tiempo. Es decir, te descargas el código, pero nada más.
- No podrás luego enviar cambios al repositorio remoto, una vez los hayas realizado en local.
En resumen, no podrás usar en general las ventajas de Git en el código descargado. Así que es mejor clonar, ya que aprender a realizar este paso es también muy sencillo.
Clientes Graficos para trabajar con Git:
Antes de usar estos entornos graficos devemos aprender usar como realmente trabaja git en su entorno basico usando comandos.
Estos son los mejores clientes GUI para manejar repositorios git que existen en la actualidad. ... Crear y clonar repositorios de cualquier sitio. Además de integrarse perfectamente con Bitbucket o Github. Commit, push, pull y merge de nuestros archivos
- Sourcetree
- Gitkraken
- Github desktop
Fuentes:
¿Qué es el control de versiones?
https://www.atlassian.com/es/git/tutorials/what-is-version-control
¿Qué es github? ¿Cómo usarlo? - Un vistazo general para principiantes - Github desktop
https://www.youtube.com/watch?v=eMuX1co8FNs
Errores en GIT
fatal: Unable to create '/.git/index.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
Utilice el siguiente comando en el directorio raíz de la aplicación.
Esto eliminará el archivo index.lock y liberará el bloqueo activo.
rm -f .git/index.lock
Cuando eliminamos un archivo en el repositorio local
hacemos un git status y nos sale:
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: Nuevo documento de texto.txt
no changes added to commit (use "git add" and/or "git commit -a")
Solución:
$ git add -u
$ git commit -m "hemos eliminado un archivo"
$ git push
Error al Clonar Repositorio
error: unable to create file Filename too long
→ Ir al Tutorial Problema al clonar un proyecto con git en windows:Filename too long