Oracle_One-Alura_Latam/005_Git_y_github/README.md

218 lines
7.8 KiB
Markdown
Raw Permalink Normal View History

# Git y Github
¿Que son **Git** y **Github**?
[link](https://www.aluracursos.com/blog/git-y-github-que-son-y-primeros-pasos).
Video para [iniacirse](https://www.youtube.com/watch?v=-LmFK6skG7s) en git.
## Controla y comparte tu código
Curso [Git y Github](https://app.aluracursos.com/course/git-github-control-version).
### Que es git
Control de versiones, trabajo en equipo. En servidor o local.
Sistemas de control de versiones
- CVS
- SVN
- Mercurial
- Git
Un sistema de control de versiones registra cada cambio realizado en un historial
que se puede revisar y restaurar, en cualquier punto de este.
Permite organizar el trabajo en equipo,
manteniendo los cambios de los archivos en un servidor dedicado.
Apuntes [Git](https://gitea.kickto.net/devfzn/basicos_git/wiki/).
Iniciando un
[repositorio](https://www.aluracursos.com/blog/iniciando-repositorio-con-git)
- `gitinit` inicia repositorio.
- `git status` estado del repositorio.
- `git add <file>` agrega el archivo al sistema de control de versiones.
- `git add .` agrega todos los archivos al sistema de control de versiones.
- `git commit` crea un punto en el historial de cambios, `-m` para el mensaje.
- `git config`, `--local`, `--global`, `--help`.
Iniciar un repositorio
```sh
git init
git config --local user.name <git-username>
git config --local user.email <git-user-email>
git config --local core.sshcommand '-i ~/.ssh/<key> -F /dev/null'
```
> ..."Al ejecutar el comando git status, recibimos información que puede no ser
tan clara, especialmente cuando nos encontramos con términos como HEAD, working
tree, index, etc.
>
>Solo para aclarar un poco, ya que entenderemos mejor cómo funciona Git durante
el curso, aquí hay algunas definiciones interesantes:
>
> - **HEAD**: Estado actual de nuestro código, es decir, donde nos colocó Git
> - **Working tree**: Lugar donde los archivos realmente están siendo almacenados
> - **index**: Lugar donde Git almacena lo que será commiteado, es decir,
la ubicación entre el working tree y el repositorio de Git en sí.
>
> Además de eso, los posibles estados de nuestros archivos son explicados con
detalle en este
[link](https://git-scm.com/book/es/v2/Fundamentos-de-Git-Guardando-cambios-en-el-Repositorio)"...
[Git log](https://gitea.kickto.net/devfzn/basicos_git/wiki/Comandos-Basicos-Git#user-content-log)
- `git log`
<details><summary markdown="span">historial</summary>
```sh
commit 7eb3ca2b356ab72fcb6d3cdd378f6e4ea86f7fcc (HEAD -> master, origin/master)
Author: devfzn <dev_fzn@proton.me>
Date: Thu Apr 13 21:31:07 2023 -0400
HTML5 y CSS3 pt. 4: Avanzando en CSS 06
Diseño responsivo - fin del curso.
commit bb393c6e7349af7da65806aa1743545734228227
Author: devfzn <dev_fzn@proton.me>
Date: Thu Apr 13 18:59:51 2023 -0400
HTML5 y CSS3 pt. 4: Avanzando en CSS 05
Uso de: opacity, box-shadow, text-shadow.
Selección de colores RGB y RGBA.
commit 17d1a78e5f9f8012826b0bc68785c410018601c4
Author: devfzn <dev_fzn@proton.me>
Date: Thu Apr 13 15:52:25 2023 -0400
HTML5 y CSS3 pt. 4: Avanzando en CSS 04
Selectores avanzados css.
Cálculos con css y medidas proporcionales.
commit e28f9798705280a2a2e37a9f5556edd1815b31d5
Author: devfzn <dev_fzn@proton.me>
Date: Thu Apr 13 14:22:10 2023 -0400
HTML5 y CSS3 pt. 4: Avanzando en CSS 03
Mejora de semantica con nuevos divisores 'div', uso de mas pseudo-clases css,
background degaradado, uso de mas pseudo-elementos.
commit edfb89ab04aa43227cafb07f796eeb6cec53c53c
Author: devfzn <dev_fzn@proton.me>
Date: Thu Apr 13 13:05:29 2023 -0400
HTML5 y CSS3 pt. 4: Avanzando en CSS 02
Uso de fuente externa google font; map & video embedded.
commit ee5b469838f175e2f16e100a381861b800bad4c3
Author: devfzn <dev_fzn@proton.me>
Date: Wed Apr 12 22:33:32 2023 -0400
HTML5 y CSS3 pt. 4: Avanzando en CSS 01
Ajustes de página para usar estilo 'style.css'.
Medidas proporcionales CSS con 'em'.
propiedad 'float' y 'clear'.
```
</details><br/>
- git-[log](https://devhints.io/git-log) config.
- archivo `.gitignore`: los archivos/directorios especificados en este archivo
son excluidos del control de veriones.
- `git remote`, repositorios remotos
- `git remote add <origin>`: Configura repositorio remoto como origen.
- `git remote remove <origin>`: Elimina el vinculo con el repositorio remoto.
- `git remote -v`: Muestra El/los repositorios remotos.
<br/>
- `git clone`, clonar repos
- `git clone <repo>`: Clona repositorio remoto en el directorio actual.
- `git clone <repo>` proyecto: Clona repositorio remoto en directorio `proyecto`.
- `git clone <repo>` .: Clona repositorio remoto en el directorio actual sin
crear otro subdirectorio para el proyecto.
<br/>
- `git push`: Envia los cambios al repostorio remoto.
- `git push <origin> <master>`: Envia los cambios de la rama `master`
repostorio remoto `origin`.
<br/>
- `git fetch <origin>`: Actualiza la información local respecto a la remota,
informa los cambios, pero no atualiza el working tree.
- `git push <origin> <master>`: Actualiza la copia local según los datos del servidor.
- `git pull <origin> <master>`: Actualiza la copia remota según los datos locales.
#### Servicios de repositorios online
- [GitLab](https://gitlab.com), Disponible online y self-host.
- [Gitea](https://gitea.io), Solo Self-host.
- [GitHub](https://github.com), Solo online.
- [Git](https://git-scm.com/docs/gitweb) Web, solo Self-host.
> - GitHub new Token [Restriction](https://www.aluracursos.com/blog/exigendia-autenticacion-por-token).
> - Acceso [ssh](https://www.aluracursos.com/blog/ssh-acceso-remoto-a-servidores) a maquinas.
- Ramas, `git branch`
- `git branch`: muestra el nombre de rama actual.
- `git branch -a`: muestra las ramas existentes.
- `git branch <rama>`: crea la ramas <rama>.
- `git checkout <rama>`: cambia a la rama <rama>.
- `git checkout -b <rama>`: crea y cambia a la rama <rama>.
> Las branches ("ramas") se utilizan para desarrollar funcionalidades aisladas
entre sí. La branch master es la branch "predeterminada" cuando creas un
repositorio.
> Nota: [Licencias](https://www.aluracursos.com/blog/open-source-una-breve-introduccion)
de software, FreeSofware y Open Source.
- `git merge <rama>`: Fusiona rama actual con `rama`. ej.
`git checkout master; git merge rama`.
- `git rebase <rama>`: Sobreesbribe la rama actual sobre `rama`. ej.
`git checkout master; git rebase rama`.
- Editar manualmente cuando falla el `merge`. Git marca la zona del conflicto.
> Siempre actualizar repositorio local antes de hacer push.
- `git restore <archivo>`: restaurar el archivo al ultimo estado guardado.
- `git restore --staged <archivo>`: saca el archivo de los cambios a incluir en
el próximo commit (staging area).
- `git reverse <commit-id>`: crea un nuevo commit que deshace el anterior.
- `git stash`: Guarda el trabajo en progreso, no crea commit.
- `git stash list`: Lista los trabajos guardados.
- `git stash apply <n>`: Aplica los cambios del trabajo guardado nro. `n`
(n queda en la lista de stach).
- `git stash pop`: Aplica los cambios del último trabajo guardado, y lo elimina
de la lista.
- `git checkout <commit_id>`: Revisar commits anteriores.
- `git diff`: Muestra las modificaciones que no han sido agregadas para el
proximo commit (staging area).
- `git diff <commit_id>`: Muestra las diferencias entre el commit actual y `commit_id`.
#### Tag
Punto en el historial, al cual se le asigna una etiqueta
Mas info en repo
[basicos_git](https://gitea.kickto.net/devfzn/basicos_git/wiki/Administracion-de-Proyecto#tags).
```sh
git tag -a v0.3 -m "Release 0.3"
git push origin "Release 0.3"
```
Ejemplos de [tags](https://gitea.kickto.net/SyDeVoS/Caldera-ino/tags).