{"id":25552659,"url":"https://github.com/badr-1/git-tutor","last_synced_at":"2025-04-11T22:22:17.410Z","repository":{"id":277355581,"uuid":"931785273","full_name":"Badr-1/git-tutor","owner":"Badr-1","description":"Git Tutor is an interactive CLI tool for learning Git, inspired by vimtutor. It offers guided levels and a sandbox mode, letting you practice Git commands directly in the terminal without worrying about commit content.","archived":false,"fork":false,"pushed_at":"2025-02-16T19:27:39.000Z","size":122,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T18:21:20.364Z","etag":null,"topics":["bash-scripting","git"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Badr-1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-12T21:13:31.000Z","updated_at":"2025-02-19T09:22:39.000Z","dependencies_parsed_at":"2025-02-13T14:44:01.953Z","dependency_job_id":null,"html_url":"https://github.com/Badr-1/git-tutor","commit_stats":null,"previous_names":["badr-1/git-tutor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badr-1%2Fgit-tutor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badr-1%2Fgit-tutor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badr-1%2Fgit-tutor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Badr-1%2Fgit-tutor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Badr-1","download_url":"https://codeload.github.com/Badr-1/git-tutor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248487817,"owners_count":21112214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash-scripting","git"],"created_at":"2025-02-20T11:34:50.637Z","updated_at":"2025-04-11T22:22:17.380Z","avatar_url":"https://github.com/Badr-1.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"logo.png\" width=\"456\" height=\"228\" \u003e\n\u003c/div\u003e\n\n# git-tutor\n\nI like git, that's not a secret now, I've built git extensions to help me explain it better before, but this one is special, I enjoyed using [learn git branching](https://learngitbranching.js.org/) but I didn't like that I had to open the web for it, after all git is a cli-tool, so why not create one for the cli, and here it's `git-tutor` the name is inspired from `vimtutor`, obviously.\n\nThe Whole Idea of it is to create an abstraction for git commands to use them without caring about the actually content of the commit - if you don't want to - and just care about the overall functionality.\n\n## Installation\nTo install `git-tutor` copy it to a directory included in your `$PATH`.\nThis allows you to use it either by `git tutor` as a git extension or `git-tutor` as a regular command.\n\nOr Use Installation Scripts.\n\nLinux\n``` bash\ncurl -sSL https://raw.githubusercontent.com/Badr-1/git-tutor/main/install.sh | bash\n```\nWindows\n```powershell\nirm https://raw.githubusercontent.com/Badr-1/git-tutor/main/install.ps1 | iex\n```\n\n## Usage\n\n```\nUsage: \n  git-tutor sandbox               Start sandbox mode\n  git-tutor play                  Start playing a specific level\n  git-tutor diff \u003cbase\u003e \u003ctarget\u003e  Start Playing in freestyle\n\nGit Commands:\n  commit [--amend]                Create a new commit\n  checkout [-b] \u003cref\u003e             Checkout or create a branch\n  switch [-c] \u003cref\u003e               Switch or create a branch\n  cherry-pick \u003ccommit\u003e            Cherry-pick a commit to current branch\n  rebase \u003cbranch\u003e                 Rebase current branch onto specified branch\n  branch \u003cname\u003e                   Create a new branch\n  merge \u003cname\u003e                    Merge Branches\n  log [--all]                     Show commit history\n  revert \u003ccommit\u003e                 Revert a commit\n  reset \u003cref\u003e                     Reset HEAD to specified commit\n\nTool Commands:\n  Description                     Shows Level Description\n  Hint                            Show Hint on How to solve the Level\n  base                            Generate a base repository from sandbox for freestyle play\n  goal                            Generate a goal repository from sandbox for freestyle play\n  clear                           Clear screen and show progress\n  reset                           Reset current level\n  help                            Show this help message\n  exit                            Exit the game\n```\n\ngit-tutor supports three distinct modes:\n- sandbox: for experiments\n- guided tutorials: based on levels\n- freestyle: how to shape a repository into another\n\n## How To Contribute\n\nThere are **Three** ways you could contribute with:\n\n### First: Design Levels\nEach level consists of the following:\n- Description: What we should do in the level?\n- Hint: How to solve the level?\n- Goal\n- Base\n\nLevels are now bundled outside `git-tutor` for extensibility into plugins see [template.gt](/template.gt) with extension `gt` and put into `~/.git-tutor` directory.\n\n### Second: New Commands\nThe available commands now aren't much, and commands options aren't fully implemented.\\\nFew Notes when adding new Command or option\n- It shouldn't be a direct command from git but rather an abstraction of it.\n- You Should test it:\n  - first: in the sandbox mode\n  - second: create a level with it, to see if it works properly\n\nThere are fours places where the commands are added to:\n1. `cmd_exe_sandbox`: for sandbox mode\n2. `cmd_exe_load`: for loading levels\n3. `cmd_exe_play`: for playing level\n4. `cmd_exe_free`: for freestyle mode\n\nAnd into the `help` with its description.\n\n\n### Third: Testing \u0026 Reporting Bugs\nYou could help by simply pointing out errors and bugs with the current implementation.\n1. Open an Issue\n2. Steps to replicate the bug\n\nIf you could solve it, just open a Pull request, and I'd be happy to review it as soon as possible.\n\n## License\nThis project is licensed under the MIT License. See the LICENSE file for details. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadr-1%2Fgit-tutor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbadr-1%2Fgit-tutor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadr-1%2Fgit-tutor/lists"}