Cómo utilizar Git con PowerShell (Parte 1): posh-git

Una de las mejores ideas que podemos tener cuando empezamos a pasar de utilizar PowerShell únicamente como consola de comandos y scripting básico a desarrollos algo más serios es involucrar una herramienta de control de versiones en la ecuación. Sin duda la herramienta de control de versiones de código más extendida en la actualidad es Git, por lo que en la entrada de hoy vamos a ver de qué manera podemos utilizar Git con PowerShell para nuestros desarrollos.

Git con PowerShell: posh-git

Antes de empezar…

En esta entrada voy a suponer que ya dispones de cierta base acerca del funcionamiento de Git. De no ser así te recomiendo que antes de entrar en la parte práctica te empapes un poco del funcionamiento de Git, existen multitud de recursos tanto online como offline para ello. Te aseguro que cada minuto que emplees en ello será un minuto aprovechado.

Insalar Git en Windows

Sea cual sea la forma en la que queramos consumir Git en PowerShell lo primero que deberemos hacer será instalar el cliente de Git para Windows. Para ello descargaremos la aplicación con nuestro navegador desde ésta URL.

La instalación básicamente es un siguiente > siguiente, pero vamos a verla paso por paso por si nos interesa cambiar algo:

  • Information: Aceptamos los terminos y condiciones.
  • Select destionation location: Elegimos la ruta de instalación del cliente.
  • Select components: Para una instalación básica dejamos los componentes marcados por defecto.
    • Si no queremos añadir entradas en el menú del explorador podemos desmarcar las opciones de Windows Explorer integration.
    • Puede resultar interesante marcar el checkeo automático de las actualizaciones para mantener Git siempre al día.
Elegir componentes de Git
  • Select Start Menu Folder: Dejamos por defecto.
  • Choosing the default editor used by Git: Aquí podemos elegir el editor que utilizará Git por defecto. Yo siempre utilizo Vim puesto que es el que utilizo en GNU/Linux, pero tenemos multitud de opciones a nuestra disposición:
Elegir editor de Git
  • Adjusting your PATH environment: Aquí podemos empezar a ver algo de PowerShell en la opción por defecto. Dejando la opción por defecto nos permitirá invocar comandos de Git desde Git Bash (la consola por defecto de Git) así como en cmd o nuestra querida PowerShell.
Path de Git en Windows
  • Choosing HTTPS transport backend: Aquí podemos elegir la opción que pefiramos. Si en vez de marcar la opción por defecto marcamos la segunda utilizaremos nuestro almacén de certificados de Windows y podremos validar contra las CA root de nuestro dominio. A gusto del consumidor.
  • Configuring the line ending conversions: Dejamos la opción por defecto puesto que será la que nos asegurará mayor compatibilidad si realizamos desarrollos multiplataforma en los saltos de línea (para poder utilizar PowerShell Core para GNU/Linux sin problema).
  • Configuring the terminal emulator to use with Git Bash: Dejamos la opción por defecto puesto que nos dejará redimensionarla sin problemas en versiones anteriores a Windows 10. No es una opción que nos interese mucho puesto que la idea es utilizar la propia PowerShell con Git.
  • Configuring extra options: Otra vez podemos dejar los settings por defecto para una instalación básica.
Instalación finalizada de Git para Windows

Como podéis ver es un instalador con muchas pantallas pero que si no deseamos ningún tipo de personalización podremos pasar a base de siguientes.

Ahora que ya tenemos la instalación finalizada podríamos abri la consola Git bash para empezar a trabajar con Git:

Git bash para Windows

Instalación de posh-git

Ahora que ya tenemos el requisito fundamental para trabajar en Git con PowerShell nos falta el módulo que va a complementar la consola para convertirla en una herramienta completa para el uso de Git. El módulo es posh-git, un módulo muy popular que podemos encontrar dentro de la PowerShell Gallery, y que nos ofrece la siguiente funcionalidad:

  • Personalización del prompt al más puro estilo Git en el que podemos ver la rama en la que nos encontramos y los cambios realizados en la misma.
  • Autocompletado de comandos de Git así como de nombres de las ramas.

Para instalar el módulo como siempre nos valdremos de Install-Module:

Install-Module posh-git -Scope CurrentUser -Force

Una vez instalado el módulo lo importaremos con Import-Module o utilizaremos la función Add-PoshGitToProfile que añadirá dicho Import-Module a nuestro perfil de PowerShell

# Opción 1: Importamos manualmente el módulo
Import-Module posh-git

# Opción 2: Modificamos nuestro perfil de PowerShell para que cargue automáticamente 
# (cerramos y abrimos la consola para que cargue el módulo)
Add-PoshToGitProfile

Utilizando Git con PowerShell mediante posh-git

Con posh-git ya instalado y cargado podemos empezar a trastear con Git. Para probar su funcionamiento vamos a hacer lo siguiente:

  • Crear una nueva carpeta (nuestro «proyecto»).
  • Inicializar un repositorio de git en ella.
  • Añadir un archivo.
  • Realizar un commit.

Antes de empezar configuraremos en Git nuestro correo y nuestro email (algo necesario para poder realizar nuestros commits):

C:\Scripts> git config --global user.email "marc@sobrebits.com"
C:\Scripts> git config --global user.name "Marc"

Con esto hecho podemos empezar con los primeros dos puntos:

Inicializando un repositorio con posh-git

En esta captura vemos un par de cosas interesantes:

  • Los comandos de Git están disponibles en PowerShell gracias a la configuración del instalador en la pantalla «Adjusting your path environment».
  • Una vez inicializado el repositorio nuestro prompt cambia indicando la rama en la que estamos (master) así como el título de la ventana que nos indica tanto el repositorio (Sobrebits-Git) como la rama.

Si ahora creamos un nuevo archivo en el repositorio veremos nuevos cambios en nuestro prompt:

Nuevo archivo en posh-git

Como podemos observar han aparecido unos números en rojo que nos vienen a indicar unas cuantas cosas:

  • +1: Se ha creado un archivo nuevo en el repositorio.
  • ~0: No se ha modificado ningún archivo.
  • -0: No se ha eliminado ningún archivo.
  • !: Existen archivos en el repositorio no trackeados.

Por último vamos a añadir nuestro nuevo archivo a la staging area y a crear nuestro primer commit:

Primer commit con git-posh
  • Al añadir nuestro nuevo archivo a la staging area vemos como la «!» del final se cambia por una «~», que nos indica que tenemos archivos pendientes de ser commiteados.
  • Al hacer commit el prompt vuelve a su estado original.

Para más información sobre los cambios en el prompt te recomiendo que revises el README.md del proyecto en GitHub.

Conclusión

Con posh-git disponemos de la capacidad de usar Git con PowerShell sin depender de otras terminales en las que realizar nuestras operaciones de versionado.

En la segunda parte veremos cómo utilizar Git con PowerShell desde Visual Studio Code, el editor de preferencia de muchos para éste lenguaje.

¡Nos vemos en la próxima!

Deja un comentario