Git Instalación y configuración en Windows

Fecha Publicación:       15 de Junio de 2021
Fecha Modificación:       04 de Junio de 2022

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: 

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

Fuente: https://git-scm.com/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Configurando-Git-por-primera-vez 

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

Vea tambien:

http://tombatossals.github.io/git-puesto-en-practica/

Articulo : 2034 - Veces Leidas
Compartir Articulo: