Git
1- Configuración git
# sets up Git with your name
git config --global [Link] "<Your-Full-Name>"
# sets up Git with your email
git config --global [Link] "<your-email-address>"
# makes sure that Git output is colored
git config --global [Link] auto
# displays the original state in a conflict
git config --global [Link] diff3
git config --list
#VSCode Setup
git config --global [Link] "code --wait"
2- Terminologías
description file: este archivo solo lo usa el programa GitWeb, por lo que
podemos ignorarlo.
hooks directory: aquí es donde podríamos colocar scripts del lado del cliente
o del lado del servidor que podemos usar para conectarnos a los diferentes
eventos del ciclo de vida de Git.
Commit (snapshot): Git piensa en sus datos como un conjunto de
instantáneas de un mini sistema de archivos. Cada vez que confirmas o
Git 1
guardas el estado de tu proyecto en Git, básicamente se necesita un imagen
de cómo se ven todos sus archivos en ese momento y almacena una
referencia a ese instantánea.
Working Directory: Los archivos que ve en el sistema de archivos de su
computadora. Cuando usted abre los archivos de tu proyecto en un editor de
código, estás trabajando con archivos en el área de trabajo Directorio.
Staging Area or Staging Index or Index: Un archivo en el directorio de Git que
almacena
información sobre lo que se incluirá en su próximo compromiso. Puedes
pensar en el área de preparación. como tabla de preparación donde Git
realizará la siguiente confirmación. Los archivos en el índice de preparación
son listo para ser agregado al repositorio.
SHA: Un SHA es básicamente un número de identificación para cada
confirmación. Es una cadena de 40 caracteres. compuesto de caracteres (0–9
y a–f) y calculado en función del contenido de un archivo o Estructura de
directorios en Git. "SHA" es la abreviatura de "SHA hash".
info directory: contiene el archivo de exclusión global.
objects directory: este directorio almacenará todas las confirmaciones que
hagamos.
refs directory: este directorio contiene punteros a confirmaciones
(básicamente las "ramas" y las "etiquetas")
2.1- ¿Cómo hacer un buen commit? :
Debe ser :
Breve (menos de 60 caracteres)
Conciso (no diga porque, ni como) sino que fue lo que cambio
No haga un commit con cambios no relacionados
Git 2
Buenas prácticas en Git y Github
La diferencia entre Git y Github parte de entender
quién controla y dónde se controla. Git es un sistema
a base de comandos que nos permite controlar las v
[Link]
hub/?utm_source=google&utm_medium=cpc&utm_ca
mpaign=18798607679&utm_adgroup=&utm_content=
&gclid=CjwKCAiA2fmdBhBpEiwA4CcHzf7gz9dNaET-
b8gHtxVdML2dz1oIr0TRIIQe9Sgd7b_8o0DiVo7u_hoC
yYAQAvD_BwE&gclsrc=[Link]
3.1- Globbing Patterns
blank lines can be used for spacing
# - marks line as a comment
- matches 0 or more characters
? - matches 1 character
Git 3
[abc] - matches a, b, _or_ c
* - matches nested directories - a/**/z matches
a/z
a/b/z
a/b/c/z
4-Combinación de indicadores de conflicto Explicación
El editor tiene los siguientes indicadores de conflicto de combinación:
<<<<<<< HEAD
todo lo que está debajo de esta línea (hasta el siguiente indicador)
muestra lo que hay en la rama actual
||||||| merged common ancestors
todo lo que está debajo de esta línea (hasta el siguiente indicador) le
muestra cuáles eran las líneas originales
=======
es el final de las líneas originales, todo lo que sigue (hasta el siguiente
indicador) es lo que hay en la rama que se está fusionando
>>>>>>> heading-updateheading-update
es el indicador final de lo que hay en la rama que se está fusionando (en
este caso, la
rama)
3- Terminos de consola
ls para listar archivos y directorios
mkdir sirve para crear un nuevo directorio
cd funciona para cambiar directorios
rm se usa para borrar o eliminar archivos y directorios
pwd sirve para imprimir el directorio de trabajo
Git 4
3.1- Navegación en consola:
Hacia abajo:
jo ⬇️ para bajar una linea a la vez
d para mover hacia la mitad de la pantalla
f para moverse una pagina completa
Hacia arriba:
k o ⬆️para moverse una linea hacia arriba
u para moverse hacia la mitad de la pagina
b para moverse una pagina completa
Salir: q
4- Referencia relativa
^ – indica la confirmación principal
~ – indica la primera confirmación principal
5-Banderas de Git Reset
La forma en que Git determina si borra, realiza cambios previamente
confirmados o anula cambios confirmados previamente es por la marca que se
usa. Las banderas son:
-mixedMixed viene por defecto y envía al commit mas reciente al Working
directory
-soft Envía al commit mas reciente al Staging Area
-hard Envía al commit mas reciente a Trash (lo borra)
4- Atajos / comandos
#Llegar mas rápido a una carpeta
mkdir -p udacity-git-course/new-git-project && cd $_
Git 5
#Clonar un repo externo pero al fina cambiando el nombre
$ git clone [Link] mylibgit #aqui
#permite ver el registro de commits
git log
#Podemos ver el registro de commits mas resumido
git log --oneline #oneline es una flag(bandera) de git log
#Con la bandera stat podemos ver que archivos fueron
modificados y como
git log --stat #stat tambien es una bandera de git log
#Se utiliza para ver cuales son los cambios que se hicieron
git log -p # -p(o --patch) tambien es una bandera de git log
#OJO se pueden combinar las banderas (no importa el orden)
#Es posible llamar específicamente un commit mediante su SHA
de varias formas
# 1- con git log -p <el SHA>
# 2- con git show
git log -p fdf5493
git log show fdf5493
Git 6
#Para agregar archivos desde el directorio de trabajo a Staging
Area se usa
git add <file> <file> <file>... <fileN>
#para agregar todos los archivos solo use
git add . o git add *
#si agrega el archivo incorrecto solo use
git rm --cached <file> y lo saca del Staging Area
#Para comprometerse y confirmar cambios solo debe usar
git commit
#si no quiere que se habrá el editor utilice la bandera -m
git commit -m "primer commit"
#Cuando se realiza un cambio (y aun no esta comprometido)
# y quiere ver que cambios hizo utilice
git diff #que le permite ver los cambios antes de comprometerlos
#Para evitar comprometer archivos que no quieren solo deben
#crear un archivo .gitignore
(ojo con el punto)
#escribir dentro el nombre de los archivos a ignorar
#con * pueden especificar el nombre o tipo de todos los archivos
a ignorar
ipconfig*...
Git 7
/config/ #si dentro del gitingore esta eso asi, significa ignora
# con la bandera -a creamos una etiqueta (tag) anotada
#este tipo de etiqueta da casi la misma informacion que el git log
o commit
git tag -a v1.0 #sin la bandera -a se crea otro tipo de tag mas
#Para ver todas las etiquetas
git tag
#para eliminar etiquetas (tags)
git tag -d v1.0 # git tag --delete v1.0
#Si desea etiquetar un commit en especifico tiene que
git tag -a v1.0 a87984
# Crear ramas nuevas
git branch <nombre nueva rama> #tambien sirve para enumerarlas y
#podemos crear ramas especificando un SHA después del nuevo
nombre
#esto con el objetivo de que la nueva rama empiece desde ese
SHA(commit) hacia abajo
# Moverse entre ramas
git checkout <nombre rama>
Git 8
#para borrar se usa la bandera -d
git branch -d Halo
#para forzar una rama a borrarse se usa -D
git branch -D Halo
#Atajo para crear y moverse a una rama
git checkout -b richards-branch-for-awesome-changes
#Como ver todos los log de las ramas
git log --oneline --decorate --graph --all
#La --graphbandera agrega viñetas y líneas a la parte más
#a la izquierda de la salida.
#Esto muestra la ramificación real que está ocurriendo.
#La --all bandera es lo que muestra
#todas las ramas en el repositorio.
#Fucionar ramas (merge)
git merge <name-of-branch-to-merge-in>
#si hay un conflicto se debe resolver en el IDE
#Modificar el commit mas reciente
git commit --amend
# Revertir un commit
Git 9
git revert <SHA-of-commit-to-revert>
#Si borra un commit por accidente tiene 30 días para recuperarlo
con
git reflog IMPORTATE
#Borrar, restablecer...
git reset <flag> <reference-to-commit>
git reset --mixed HEAD~1 #viene por defecto osea es lo mismo gi
#Borrar ultimo commit
git reset --hard HEAD~1
# Rama como copia de seguridad
git branch backup
Git 10