Skip to main content

Comandos básicos de Git

En esta sección aprenderás los comandos básicos de Git, como inicializar un repositorio, como clonar un repositorio, estatus, entre otras funcionalidades.

Iniciar repositorio desde un directorio existente

Para poder iniciar Git en directorio local existente que deseas administrar., te colocas en la capeta raíz de tu proyecto y ejecutas:

git init

Esto crea un nuevo subdirectorio llamado .git que contiene todos los archivos de repositorio necesarios en un esqueleto de repositorio de Git.

Si deseas agregar todos los archivos que ya existen en el directorio se ejecuta:

git add .
git commit -m 'Initial project version'

Iniciar desde un repositorio existente por medio de una clonación

git clone https://<domain>/<user>/<repository>

Si el repositorio es restringido, el acceso por medio de usuario y contraseña se realiza de la siguiente manera:

git clone https://<user>:<password>@<domain>/<user>/<repository>

Iniciar desde una carpeta local

git remote add origin https://<user>:<password>@<domain>/<user>/<repository>

Ayuda

Buscar descripción de comando:

git help <verb>
git <verb> --help
git <verb> -h

Estatus de archivos

Revisar archivos actuales en el directorio de la rama maestra:

git status

Agregar nuevos archivos al seguimiento del proyecto o cambios realizados de forma unitaria:

git add <file|folder>

Agregar archivos al proyecto o cambios realizados de forma completa

git add .

Los archivos agregados pasarán a estatus de staged

Ignorar archivos

Para informar a Git de todos aquellos archivos que se quieren ignorar, es decir no mantener un seguimiento de ellos en nuestro versionamiento, se hace uso del archivo .gitignore. El texto dentro de este archivo sigue las siguientes reglas:

  • Las líneas en blanco o las líneas que comienzan con # se ignoran.
  • Los patrones globales estándar funcionan y se aplicarán recursivamente a lo largo de todo el árbol de trabajo.
  • Puede comenzar los patrones con una barra diagonal (/) para evitar la recursividad.
  • Puede finalizar los patrones con una barra diagonal (/) para especificar un directorio.
  • Se puede negar un patrón comenzando con un signo de exclamación (!).

Los patrones globales son como expresiones regulares simplificadas que utilizan los comandos shell, y pueden ser: Un asterisco (*) coincide con cero o más caracteres; *[abc] *coincide con cualquier carácter dentro de los corchetes (en este caso, a, b o c); un signo de interrogación (?) coincide con un solo carácter; y los corchetes que encierran caracteres separados por un guion ([0-9]) coinciden con cualquier carácter entre ellos (en este caso, del 0 al 9). También puede usar dos asteriscos (**) para hacer coincidir directorios anidados; a/**/z coincidiría con a/z, a/b/z, a/b/c/z, etc.

Ejemplo:

# ignore all .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in any directory named build
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory and any of its subdirectories
doc/**/*.pdf

Puedes revisar https://github.com/github/gitignore para algunos ejemplos de distintos lenguajes y su uso de .gitignore

Analizar cambios

Para analizar los cambios que ocurren directamente entre los archivos modificados y que están sin subirse al stage, se utiliza:

git diff

Ver cambios respecto a un archivo en stage y aquellos del último commit:

git diff --staged

Consolidar cambios

Quitar archivos agregados

git reset <file>

Eliminar archivos sin borrar localmente el origen

git rm -r --cached <file|folder>

Crear nuevo commit de los cambios realizados en el staging area

git commit -m "<comentario>"

git commit

Te abre un archivo con tus cambios, se debe de insertar mensaje de identificación:

<Comentario>
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
# new file: hello.html
# new file: sketches/package-lock.json
# new file: sketches/package.json
# new file: sketches/sketch-01.js
# new file: sketches/sketch-02.js
# new file: sketches/sketch-03.js
#
# Untracked files:
# .vs/
# sketches/node_modules/
#

Agregar archivo y realizar commit con comentarios en un solo comando

git commit -am "<comment>"

Actualizar comentario a último commit

git commit --amend -m "<new comments>"

Pare revisar los movimientos realizados

git log

Omitir cambios realizados en un archivo

git restore <file>
ó
git checkout -- <file>
ó para regresar todos los archivos
git checkout -- .

Ver cambios ejecutados en archivo

git diff hello.html
diff --git a/hello.html b/hello.html
index 5390b51..159e9d9 100644
--- a/hello.html
+++ b/hello.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
- <h1> Hello, Domestika </h1>
+ <h1> Hello, Domestika Course</h1>
<canvas width="600" height="600" ></canvas>
<script type="text/javascript">

Regresar a un commit anterior

git reset --soft HEAD^<numero de commits a regresar>

Crear una nueva rama a partir de la actual

git branch <name>

Mostrar ramas existentes y rama actual

git branch

Cambiar de rama

git checkout <branchtochange>

Agregar código a git remoto

git remote remove origin

git remote add origin https://<token>@github.com/<user>/<repo>

Creación de alias

git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"

Crear combinación de ramas

git merge <branch-to-combine>

Eliminar rama

git branch -d <branch>

Creación de versiones con tag

git tag -a <version, ej v0.0.1> -m "<comments>"

Envío de tag a repositorio remoto

git push -u origin v1.2.0

Creación de Stash

git stash

Agregar repositorio remoto adicional

git remote add <nombre> <url_origen>

Hacer rebase a ramas

git rebase --continue