# \[Aula 02] Introdução ao Controle de Versão

## Agenda:

* Entendendo o controle de versão e sua necessidade.
* Sistemas de controle de versão: local x centralizado x distribuído.
* Conhecendo o Git: a ferramenta revolucionária de controle de versão.

{% embed url="<https://youtu.be/vAD-C7Oj96c>" %}

## 1. Entendendo o Controle de Versão

O controle de versão refere-se ao processo de rastrear e controlar mudanças nos arquivos de um projeto. É uma ferramenta crucial para devs, permitindo colaborações eficazes e o gerenciamento de históricos de alterações.

### Por que é tão essencial?

* **Colaboração:** Permite que várias pessoas trabalhem no mesmo projeto simultaneamente.
* **Rastreamento:** Você pode revisitar versões anteriores, entender o que foi alterado e quando.
* **Proteção:** Se algo der errado, é fácil voltar a um estado anterior do projeto.

## 2. Tipos de Sistemas de Controle de Versão

### Local

Os sistemas de controle de versão local mantêm um banco de dados local com todas as mudanças no projeto.

🚫 **Limitação:** Falta de colaboração e alto risco de perda de dados.

![Sistema de Arquivos: Local](https://3620724102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvHtrkGTZa2sreJmCeP0b%2Fuploads%2Fgit-blob-a73b429917178290f3d8d363745f4b71441cfa7d%2Fsistema-arquivos-local.webp?alt=media)

### Centralizado

Os sistemas centralizados, como o SVN, têm um servidor central contendo todas as versões dos arquivos. Os usuários pegam arquivos deste servidor central.

✅ **Vantagem:** Melhor colaboração em relação ao local.

🚫 **Limitação:** Se o servidor central falhar, todo o histórico de versões pode ser comprometido.

![Sistema de Arquivos: Centralizado](https://3620724102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvHtrkGTZa2sreJmCeP0b%2Fuploads%2Fgit-blob-288f2e5876419673c3942608f4a8b750bd5c1c54%2Fsistema-arquivos-centralizado.webp?alt=media)

### Distribuído

Os sistemas distribuídos, como o Git, permitem que cada pessoas tenha uma cópia local completa do histórico de desenvolvimento.

✅ **Vantagem:** Robustez, flexibilidade e permite operações offline.

![Sistema de Arquivos: Distribuído](https://3620724102-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvHtrkGTZa2sreJmCeP0b%2Fuploads%2Fgit-blob-06df85ca0b8009964ab85476bbde654e9f67af85%2Fsistema-arquivos-distribuido.png?alt=media)

## 3. Introdução ao Git

Git é um sistema de controle de versão distribuído gratuito e de código aberto que pode lidar com tudo, desde pequenos a grandes projetos, com rapidez e eficiência.

### Por que Git é revolucionário?

* **Eficiência:** O Git é incrivelmente rápido, permitindo operações quase instantâneas.
* **Distribuído:** Como mencionado anteriormente, sua natureza distribuída oferece várias vantagens.
* **Integridade de Dados:** O Git usa uma estrutura de dados chamada 'snapshot' que garante a integridade do código.
* **Flexibilidade:** O Git suporta milhares de ramificações paralelas e a fusão entre elas é uma operação fundamental.

> No próximo capítulo, vamos mergulhar no mundo do GitHub e ver como ele se tornou uma plataforma dominante para hospedagem de projetos baseados em Git.
