Git es sistema de control de versiones distribuido que está siendo muy demandado últimamente por el mercado laboral.
A lo largo de mi carrera profesional he trabajado con tres sistemas de control de versiones:
- SVN o Apache Subversion
- ClearCase
- Git
Creo que Git gana por goleada a los otros dos.
Como llevaba muchos años sin tocar Git, he tenido que refrescar conceptos hace unos meses y creo que puede ser muy útil que deje por aquí todos los recursos que encontré y me fueron útiles.
- Learn Git Branching
- Videotutoriales
- Git -Documentation
- Managing SourceCode with Git - Pluralsight
- GitHub
- Videotutorial de GitLab: Gitlab CI pipeline tutorial for beginners
- Gerrit
Es una web diseñada para ayudar a los principiantes a manejarse con ramas (branches) en Git y su principal fuerte es que es muy visual.
Si sois de los que preferís ver tutoriales antes que leer aquí tenéis una ristra de videotutoriales listos para ser degustados:
Git Tutorial for Beginners - Crash Course
Improving your Development Processes with Git Best Practices
Advanced Git Tutorials <- Lista de videotutoriales avanzados
La documentación oficial de Git obviamente es la fuente de información más fidedigna que se puede encontrar.
Tiene muchísimos ejemplos y puede solventar cualquier duda.
Si tenéis acceso a PluralSight nunca está de más hacer un curso online que os puede ayudar a mejorar.
GitHub es web donde alojar proyectos utilizando Git, por lo que muchas veces se espera que conozcas cómo funciona GitHub si has utilizado Git.
Git & GitHub - Managing Your Code
GitLab es una suite completa que permite gestionar, administrar, crear y conectar los repositorios con diferentes aplicaciones y hacer todo tipo de integraciones con ellas, ofreciendo un ambiente y una plataforma en cual se puede realizar las varias etapas de su SDLC/ADLC y DevOps.
Gerrit es una aplicación web gratuita de revisión de código utilizada por desarrolladores de software para revisar en equipo las modificaciones de cada uno en el código fuente y también para aprobar o rechazar estas modificaciones usando un navegador web. Lógicamente Gerrit se integra con Git, de ahí que también se pida que conozcas cómo funciona.
Working with Gerrit: An example
Documentation
Con esto terminaríamos todos los recursos útiles que he utilizado/encontrado, pero aquí dejo un par de bolas extras que nunca están de más.
- Conventional Commits
- Configuración de tu .gitconfig
- Configuración de tu .git_commit_msg_template
- Configuración de tu .gitglobalignore
Es un convenio para redactar mensajes de commits de una manera lógica y ordenada para todos.
Muy útil si no sabes muy bien qué formato quieres en tus commits.
[user]
name = [nombre] ([usuario])
email = [dirección de correo]
[alias]
lg = log --graph --branches=local/ HEAD master --oneline
lg1 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white black)%s%C(reset) %C(bold cyan)-- %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative --branches=local/
lg2 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white black)%s%C(reset) %C(bold cyan)-- %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative --branches=local/ HEAD master
lg3 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white black)%s%C(reset) %C(bold cyan)-- %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative --all
backup = "!f() { git branch $(date \"+backup/%Y/%m/%d/%H%M%S\") \"$@\"; }; f"
st = status
co = checkout
draft = !git push origin HEAD:refs/drafts/master
devdraft =!git push origin HEAD:refs/for/dev%draft
pushfor =!git push origin HEAD:refs/for/master
pushfordev =!git push origin HEAD:refs/for/dev
private =!git push origin HEAD:refs/for/master%private
wip =!git push origin HEAD:refs/for/master%wip
ready =!git push origin HEAD:refs/for/master%ready
pushprestaging =!git push origin HEAD:refs/for/prestaging_dual_mode
ps = !git push origin HEAD:refs/for/$(git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed "s#^origin/##")
psdraft = !git push origin HEAD:refs/drafts/$(git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed "s#^origin/##")
pswip = !git push origin HEAD:refs/for/$(git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed "s#^origin/##")%wip
psready = !git push origin HEAD:refs/for/$(git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed "s#^origin/##")%ready
psprivate = !git push origin HEAD:refs/for/$(git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed "s#^origin/##")%private
pspublic = !git push origin HEAD:refs/for/$(git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed "s#^origin/##")%remove-private
[core]
editor = vim
excludesFile = ~/.gitglobalignore
[commit]
template = /home/[usuario]/.git_commit_msg_template
En este archivo escribirás el template que se usará en todos tus commits, por ejemplo:
< type >[ optional scope ]: < description >
#SUBJECT: ^^^ update subject in the first line |MARK-50
# Try not to exceed 50 characters
# FORMAT: [optional scope]:
# Follow Conventional Commits: https://www.conventionalcommits.org/en/
En este archivo configurarás todos los ignores a nivel global que quieras que tenga Git, por ejemplo:
# Visual Studio Code configuration files
.vscode/
Y esto es todo lo que os puedo dejar referente a Git.
¡Espero que os haya sido útil!