# eficode-academy/git-katas architecture

> Architecture diagram of the GitHub repository eficode-academy/git-katas, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/eficode-academy/git-katas
- Repository: https://github.com/eficode-academy/git-katas

## Overview

Git Katas is a teaching collection of hands-on Git exercises, not a single application. Learners choose an exercise, read its instructions, run its setup script to prepare a local scenario, then practice Git operations on that repository. The README documents a learning path spanning commits, staging, investigation, branching, merges, rebasing, reversions, resets, cleaning, and stashing. Other listed exercise directories cover additional Git topics. Setup implementations were not sampled, so their internal actions and any verification flow are not inferred.

Main entry points: [`Overview.md`](https://github.com/eficode-academy/git-katas/blob/master/Overview.md) (Exercise catalog), [`basic-commits`](https://github.com/eficode-academy/git-katas/tree/master/basic-commits) (Scenario setup), [`basic-commits/README.md`](https://github.com/eficode-academy/git-katas/blob/master/basic-commits/README.md) (Exercise instructions), [`basic-staging/README.md`](https://github.com/eficode-academy/git-katas/blob/master/basic-staging/README.md) (Staging changes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning and discovery"]
  node_catalog["Exercise catalog<br/>[Overview.md]"]
  node_instructions["Exercise instructions<br/>[README.md]"]
  node_scenario_setup["Scenario setup"]
  node_local_repo[("Exercise repository")]
end

subgraph group_core["Git fundamentals"]
  node_commits["Commits<br/>[README.md]"]
  node_staging["Staging changes<br/>[README.md]"]
  node_investigation["History investigation<br/>[README.md]"]
end

subgraph group_history["History and integration"]
  node_branching["Branching<br/>[README.md]"]
  node_merging["Merge exercises<br/>[README.md]"]
  node_merge_sort["Merge-sort conflict<br/>[README.md]"]
  node_rebasing["Rebasing<br/>[README.md]"]
  node_advanced["Advanced Git topics"]
end

subgraph group_recovery["Recovery and collaboration"]
  node_revert["Reverting<br/>[README.md]"]
  node_reset["Resetting<br/>[README.md]"]
  node_cleaning["Cleaning worktree<br/>[README.md]"]
  node_amend["Amending commits<br/>[README.md]"]
  node_reorder["Reordering history<br/>[README.md]"]
  node_autosquash["Autosquash rebase<br/>[README.md]"]
  node_stashing["Stashing changes<br/>[README.md]"]
  node_remotes["Remote workflows"]
end

node_learner(("Learner"))

node_learner -->|"browses"| node_catalog
node_catalog -->|"selects exercise"| node_instructions
node_learner -->|"reads"| node_instructions
node_learner -->|"runs setup"| node_scenario_setup
node_scenario_setup -->|"prepares scenario"| node_local_repo
node_learner -->|"practices Git"| node_local_repo
node_learner -->|"practices"| node_commits
node_learner -->|"practices"| node_staging
node_learner -->|"practices"| node_investigation
node_learner -->|"practices"| node_branching
node_learner -->|"practices"| node_merging
node_learner -->|"practices"| node_merge_sort
node_learner -->|"practices"| node_rebasing
node_learner -->|"practices"| node_revert
node_learner -->|"practices"| node_reset
node_learner -->|"practices"| node_cleaning
node_learner -->|"practices"| node_amend
node_learner -->|"practices"| node_reorder
node_learner -->|"practices"| node_autosquash
node_learner -->|"practices"| node_stashing
node_learner -->|"explores"| node_advanced
node_learner -->|"explores"| node_remotes

click node_catalog "https://github.com/eficode-academy/git-katas/blob/master/Overview.md"
click node_instructions "https://github.com/eficode-academy/git-katas/blob/master/basic-commits/README.md"
click node_scenario_setup "https://github.com/eficode-academy/git-katas/tree/master/basic-commits"
click node_commits "https://github.com/eficode-academy/git-katas/blob/master/basic-commits/README.md"
click node_staging "https://github.com/eficode-academy/git-katas/blob/master/basic-staging/README.md"
click node_investigation "https://github.com/eficode-academy/git-katas/blob/master/investigation/README.md"
click node_branching "https://github.com/eficode-academy/git-katas/blob/master/basic-branching/README.md"
click node_merging "https://github.com/eficode-academy/git-katas/blob/master/3-way-merge/README.md"
click node_merge_sort "https://github.com/eficode-academy/git-katas/blob/master/merge-mergesort/README.md"
click node_rebasing "https://github.com/eficode-academy/git-katas/blob/master/rebase-branch/README.md"
click node_revert "https://github.com/eficode-academy/git-katas/blob/master/basic-revert/README.md"
click node_reset "https://github.com/eficode-academy/git-katas/blob/master/reset/README.md"
click node_cleaning "https://github.com/eficode-academy/git-katas/blob/master/basic-cleaning/README.md"
click node_amend "https://github.com/eficode-academy/git-katas/blob/master/amend/README.md"
click node_reorder "https://github.com/eficode-academy/git-katas/blob/master/reorder-the-history/README.md"
click node_autosquash "https://github.com/eficode-academy/git-katas/blob/master/rebase-interactive-autosquash/README.md"
click node_stashing "https://github.com/eficode-academy/git-katas/blob/master/basic-stashing/README.md"
click node_advanced "https://github.com/eficode-academy/git-katas/tree/master/advanced-rebase-interactive"
click node_remotes "https://github.com/eficode-academy/git-katas/tree/master/master-based-workflow"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_catalog,node_instructions,node_scenario_setup,node_local_repo toneBlue
class node_commits,node_staging,node_investigation toneAmber
class node_branching,node_merging,node_merge_sort,node_rebasing,node_advanced toneMint
class node_revert,node_reset,node_cleaning,node_amend,node_reorder,node_autosquash,node_stashing,node_remotes toneRose
class node_learner toneIndigo
```

## Components

### Learning and discovery

- [Exercise catalog](https://github.com/eficode-academy/git-katas/blob/master/Overview.md): `Overview.md`
- [Exercise instructions](https://github.com/eficode-academy/git-katas/blob/master/basic-commits/README.md): `basic-commits/README.md`
- [Scenario setup](https://github.com/eficode-academy/git-katas/tree/master/basic-commits): `basic-commits`
- **Exercise repository**

### Git fundamentals

- [Commits](https://github.com/eficode-academy/git-katas/blob/master/basic-commits/README.md): `basic-commits/README.md`
- [Staging changes](https://github.com/eficode-academy/git-katas/blob/master/basic-staging/README.md): `basic-staging/README.md`
- [History investigation](https://github.com/eficode-academy/git-katas/blob/master/investigation/README.md): `investigation/README.md`

### History and integration

- [Branching](https://github.com/eficode-academy/git-katas/blob/master/basic-branching/README.md): `basic-branching/README.md`
- [Merge exercises](https://github.com/eficode-academy/git-katas/blob/master/3-way-merge/README.md): `3-way-merge/README.md`
- [Merge-sort conflict](https://github.com/eficode-academy/git-katas/blob/master/merge-mergesort/README.md): `merge-mergesort/README.md`
- [Rebasing](https://github.com/eficode-academy/git-katas/blob/master/rebase-branch/README.md): `rebase-branch/README.md`
- [Advanced Git topics](https://github.com/eficode-academy/git-katas/tree/master/advanced-rebase-interactive): `advanced-rebase-interactive`

### Recovery and collaboration

- [Reverting](https://github.com/eficode-academy/git-katas/blob/master/basic-revert/README.md): `basic-revert/README.md`
- [Resetting](https://github.com/eficode-academy/git-katas/blob/master/reset/README.md): `reset/README.md`
- [Cleaning worktree](https://github.com/eficode-academy/git-katas/blob/master/basic-cleaning/README.md): `basic-cleaning/README.md`
- [Amending commits](https://github.com/eficode-academy/git-katas/blob/master/amend/README.md): `amend/README.md`
- [Reordering history](https://github.com/eficode-academy/git-katas/blob/master/reorder-the-history/README.md): `reorder-the-history/README.md`
- [Autosquash rebase](https://github.com/eficode-academy/git-katas/blob/master/rebase-interactive-autosquash/README.md): `rebase-interactive-autosquash/README.md`
- [Stashing changes](https://github.com/eficode-academy/git-katas/blob/master/basic-stashing/README.md): `basic-stashing/README.md`
- [Remote workflows](https://github.com/eficode-academy/git-katas/tree/master/master-based-workflow): `master-based-workflow`

### Other components

- **Learner**

## Connections

- Learner → Exercise catalog: browses
- Exercise catalog → Exercise instructions: selects exercise
- Learner → Exercise instructions: reads
- Learner → Scenario setup: runs setup
- Scenario setup → Exercise repository: prepares scenario
- Learner → Exercise repository: practices Git
- Learner → Commits: practices
- Learner → Staging changes: practices
- Learner → History investigation: practices
- Learner → Branching: practices
- Learner → Merge exercises: practices
- Learner → Merge-sort conflict: practices
- Learner → Rebasing: practices
- Learner → Reverting: practices
- Learner → Resetting: practices
- Learner → Cleaning worktree: practices
- Learner → Amending commits: practices
- Learner → Reordering history: practices
- Learner → Autosquash rebase: practices
- Learner → Stashing changes: practices
- Learner → Advanced Git topics: explores
- Learner → Remote workflows: explores
