49 lines
1.1 KiB
Markdown
49 lines
1.1 KiB
Markdown
# Version Control
|
|
|
|
Track every change to your code, collaborate without stepping on each other, and roll back anything.
|
|
|
|
## Tools
|
|
|
|
**Git** is the universal standard. Pair it with a hosting platform for collaboration and access control.
|
|
|
|
| Platform | Self-hosted | Cloud |
|
|
|---|---|---|
|
|
| GitHub | — | github.com |
|
|
| GitLab | yes | gitlab.com |
|
|
| Gitea | yes | — |
|
|
|
|
## Key Concepts
|
|
|
|
- **Commit often** — small, atomic commits are easier to review and revert
|
|
- **Branch per feature** — keeps main stable and deployable at all times
|
|
- **Merge/rebase before pushing** — resolve conflicts locally, not in CI
|
|
|
|
## Quickstart
|
|
|
|
```bash
|
|
git init
|
|
git add .
|
|
git commit -m "initial commit"
|
|
|
|
# branch workflow
|
|
git checkout -b feature/my-thing
|
|
# ... make changes ...
|
|
git add -p # stage interactively
|
|
git commit -m "feat: describe the change"
|
|
git push origin feature/my-thing
|
|
```
|
|
|
|
## Minimal Config
|
|
|
|
```bash
|
|
git config --global user.name "Your Name"
|
|
git config --global user.email "you@example.com"
|
|
git config --global init.defaultBranch main
|
|
git config --global pull.rebase true
|
|
```
|
|
|
|
## Helpful tools
|
|
|
|
- `lazygit`
|
|
- VSCode Git Graph extension
|