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