## Conceptos b谩sicos de GIT para principiantes en desarrollo web 馃懚
## 驴Qu茅 es `Git`?
1. Git es un sistema de control de versiones distribuido.
2. Todo el c贸digo y su historial est谩n disponibles en la computadora de cada desarrollador, lo que facilita la creaci贸n de ramas y la fusi贸n de cambios.
3. Se utiliza como Sistema de Control de Versiones (VCS) para rastrear cambios en archivos de computadora.
* Control de versiones distribuido
* Coordina el trabajo entre varios desarrolladores
* Qui茅n hizo qu茅 cambios y cu谩ndo
* Revertir cambios en cualquier momento
* Repositorios locales y remotos
## CONCEPTOS DE GIT
* Mantiene un historial de cambios en el c贸digo
* Toma "instant谩neas" de tus archivos
* T煤 decides cu谩ndo tomar una instant谩nea haciendo un "commit"
* Puedes visitar cualquier instant谩nea en cualquier momento
* Puedes preparar archivos antes de hacer un commit
### Diferencia entre Git y GitHub
| Git | GitHub |
| ------- | ----------- |
| Git es un software | GitHub es un servicio en la nube |
| Git se instala localmente en el sistema | GitHub est谩 alojado en la web |
| Es una herramienta de l铆nea de comandos | Es una interfaz gr谩fica |
| Git es mantenido por Linux | GitHub es mantenido por Microsoft |
| Se centra en el control de versiones y el intercambio de c贸digo | Se centra en el alojamiento centralizado de c贸digo fuente |
| Git tiene licencia de c贸digo abierto | GitHub incluye un nivel gratuito y uno de pago |
| Git fue lanzado en 2005 | GitHub fue lanzado en 2008 |
## Instalaci贸n de GIT
* Linux (Debian)
`$sudo apt-get install git`
* Linux (Fedora)
`$sudo yum install git`
* [Descargar](http://git-scm.com/download/mac) para Mac
* [Descargar](http://git-scm.com/download/win) para Windows
### Pasos del proceso de instalaci贸n:
1.
2.
3.
4.
5.
6. Luego contin煤a con Siguiente > Siguiente > Siguiente > Instalar
7.
### Despu茅s de la instalaci贸n, necesitamos configurar Git usando Git Bash
1. `git config --global user.name 'TuNombre'`
2. `git config --global user.email 'TuCorreo'`
___
## Comandos de Git
___
### Obtener y crear proyectos
| Comando | Descripci贸n |
| ------- | ----------- |
| `git init` | Inicializar un repositorio Git local |
| `git clone ssh://git@github.com/[username]/[repository-name].git` | Crear una copia local de un repositorio remoto |
### Instant谩neas b谩sicas
| Comando | Descripci贸n |
| ------- | ----------- |
| `git status` | Verificar el estado |
| `git add [file-name.txt]` | Agregar un archivo al 谩rea de preparaci贸n |
| `git add -A` | Agregar todos los archivos nuevos y modificados al 谩rea de preparaci贸n |
| `git commit -m "[commit message]"` | Confirmar cambios |
| `git rm -r [file-name.txt]` | Eliminar un archivo (o carpeta) |
| `git push` | Subir al repositorio remoto |
| `git pull` | Descargar los 煤ltimos cambios del repositorio remoto |
### Ramas y fusi贸n
| Comando | Descripci贸n |
| ------- | ----------- |
| `git branch` | Listar ramas (el asterisco indica la rama actual) |
| `git branch -a` | Listar todas las ramas (locales y remotas) |
| `git branch [branch name]` | Crear una nueva rama |
| `git branch -D [branch name]` | Eliminar una rama |
| `git push origin --delete [branch name]` | Eliminar una rama remota |
| `git checkout -b [branch name]` | Crear una nueva rama y cambiar a ella |
| `git checkout -b [branch name] origin/[branch name]` | Clonar una rama remota y cambiar a ella |
| `git branch -m [old branch name] [new branch name]` | Renombrar una rama local |
| `git checkout [branch name]` | Cambiar a una rama |
| `git checkout -` | Cambiar a la 煤ltima rama seleccionada |
| `git checkout -- [file-name.txt]` | Descartar cambios en un archivo |
| `git merge [branch name]` | Fusionar una rama con la rama activa |
| `git merge [source branch] [target branch]` | Fusionar una rama con una rama objetivo |
| `git stash` | Guardar cambios en un directorio de trabajo sucio |
| `git stash clear` | Eliminar todas las entradas guardadas |
### Compartir y actualizar proyectos
| Comando | Descripci贸n |
| ------- | ----------- |
| `git push origin [branch name]` | Subir una rama a tu repositorio remoto |
| `git push -u origin [branch name]` | Subir cambios al repositorio remoto (y recordar la rama) |
| `git push` | Subir cambios al repositorio remoto (rama recordada) |
| `git push origin --delete [branch name]` | Eliminar una rama remota |
| `git pull` | Actualizar el repositorio local al 煤ltimo commit |
| `git pull origin [branch name]` | Descargar cambios del repositorio remoto |
| `git remote add origin ssh://git@github.com/[username]/[repository-name].git` | Agregar un repositorio remoto |
| `git remote set-url origin ssh://git@github.com/[username]/[repository-name].git` | Configurar la rama de origen de un repositorio a SSH |
### Inspecci贸n y comparaci贸n
| Comando | Descripci贸n |
| ------- | ----------- |
| `git log` | Ver cambios |
| `git log --summary` | Ver cambios (detallado) |
| `git log --oneline` | Ver cambios (breve) |
| `git diff [source branch] [target branch]` | Previsualizar cambios antes de fusionar |
---
**Descargo de responsabilidad**:
Este documento ha sido traducido utilizando el servicio de traducci贸n autom谩tica [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por garantizar la precisi贸n, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para informaci贸n cr铆tica, se recomienda una traducci贸n profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones err贸neas que puedan surgir del uso de esta traducci贸n.