{"id":18898471,"url":"https://github.com/initialcommit-com/git-story","last_synced_at":"2026-02-28T18:01:55.259Z","repository":{"id":45762295,"uuid":"491677928","full_name":"initialcommit-com/git-story","owner":"initialcommit-com","description":"Easily create video animations (.mp4) of your Git commit history, directory from your Git repo.","archived":false,"fork":false,"pushed_at":"2023-11-21T20:28:26.000Z","size":152,"stargazers_count":252,"open_issues_count":3,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-03T02:11:18.447Z","etag":null,"topics":["animation","collaboration","git","gitcommand","gitcommands","gitrepo","gitrepository","gitstory","software-development","video","visualization","viz"],"latest_commit_sha":null,"homepage":"https://initialcommit.com/tools/git-story","language":"Python","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/initialcommit-com.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":"2022-05-12T21:50:31.000Z","updated_at":"2025-03-15T11:47:00.000Z","dependencies_parsed_at":"2024-11-08T08:42:56.240Z","dependency_job_id":"a8830439-788f-4adb-abc2-701a05d80cc7","html_url":"https://github.com/initialcommit-com/git-story","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/initialcommit-com/git-story","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialcommit-com%2Fgit-story","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialcommit-com%2Fgit-story/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialcommit-com%2Fgit-story/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialcommit-com%2Fgit-story/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/initialcommit-com","download_url":"https://codeload.github.com/initialcommit-com/git-story/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialcommit-com%2Fgit-story/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29946463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T17:57:52.716Z","status":"ssl_error","status_checked_at":"2026-02-28T17:57:31.974Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["animation","collaboration","git","gitcommand","gitcommands","gitrepo","gitrepository","gitstory","software-development","video","visualization","viz"],"created_at":"2024-11-08T08:42:48.540Z","updated_at":"2026-02-28T18:01:55.238Z","avatar_url":"https://github.com/initialcommit-com.png","language":"Python","readme":"# git-story\nTell the story of your Git project by creating video animations (.mp4)\nof your commit history directly from your Git repo.\n\n## Use cases\n- Visualizing Git projects\n- Sharing desired parts of your workflow with your team\n- Creating animated Git videos for blog posts or YouTube\n- Helping newer developers learn Git\n\n## Features\n- Run a single command in the terminal to generate a custom Git animation (.mp4) from your repo\n- Specify any commit id or ref to start animating from (default: `HEAD`)\n- Specify the number of commits to include (default: `8`)\n- Ref labels are drawn by default for `HEAD`, branch names, and tags\n- Reverse commit ordering and reorient branch layout\n- Works best with simpler branching structures, but should work with more complex ones as well\n- Add custom branded intro/outro sequences if desired\n- Dark mode and light mode\n\n## Video animation example\nhttps://user-images.githubusercontent.com/49353917/179362209-48748966-6d6c-46ff-9424-b1a7266fc83f.mp4\n\n## Requirements\n* Python 3.9 or greater\n* Pip (Package manager for Python)\n* [Manim (Community version)](https://www.manim.community/)\n* GitPython\n\n## Quickstart\n1) Install [manim and manim dependencies for your OS](https://www.manim.community/)\n\n2) Install GitPython\n\n```console\n$ pip3 install gitpython\n```\n\n3) Install `git-story`:\n\n```console\n$ pip3 install git-story\n```\n\n3) Browse to the Git repository you want create an animation from:\n\n```console\n$ cd path/to/project/root\n```\n\n4) Run the program:\n\n```console\n$ git-story\n```\n\n5) A default animation `.mp4` file will be created using the most recent 8 commits on your checked-out Git branch. By default, video output file is created in the current directory, within a subdirectory called `git-story_media`. The location this subdirectory is customizeable using the command line flag `--media-dir=path/to/output`.\n\n6) Use command-line options for customization, see usage:\n\n```console\n$ git-story -h\n\nusage: git-story [-h] [--commits COMMITS] [--commit-id COMMIT_ID] [--hide-merged-chains] [--reverse] [--title TITLE] [--logo LOGO] [--outro-top-text OUTRO_TOP_TEXT]\n                 [--outro-bottom-text OUTRO_BOTTOM_TEXT] [--show-intro] [--show-outro] [--max-branches-per-commit MAX_BRANCHES_PER_COMMIT] [--max-tags-per-commit MAX_TAGS_PER_COMMIT]\n                 [--media-dir MEDIA_DIR] [--low-quality] [--light-mode] [--invert-branches]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --commits COMMITS     The number of commits to display in the Git animation (default: 8)\n  --commit-id COMMIT_ID\n                        The ref (branch/tag), or first 6 characters of the commit to animate backwards from (default: HEAD)\n  --hide-merged-chains  Hide commits from merged branches, i.e. only display mainline commits (default: False)\n  --reverse             Display commits in reverse order in the Git animation (default: False)\n  --title TITLE         Custom title to display at the beginning of the animation (default: Git Story, by initialcommit.com)\n  --logo LOGO           The path to a custom logo to use in the animation intro/outro (default: /usr/local/lib/python3.9/site-packages/git_story/logo.png)\n  --outro-top-text OUTRO_TOP_TEXT\n                        Custom text to display above the logo during the outro (default: Thanks for using Initial Commit!)\n  --outro-bottom-text OUTRO_BOTTOM_TEXT\n                        Custom text to display below the logo during the outro (default: Learn more at initialcommit.com)\n  --show-intro          Add an intro sequence with custom logo and title (default: False)\n  --show-outro          Add an outro sequence with custom logo and text (default: False)\n  --max-branches-per-commit MAX_BRANCHES_PER_COMMIT\n                        Maximum number of branch labels to display for each commit (default: 2)\n  --max-tags-per-commit MAX_TAGS_PER_COMMIT\n                        Maximum number of tags to display for each commit (default: 1)\n  --media-dir MEDIA_DIR\n                        The path to output the animation data and video file (default: .)\n  --low-quality         Render output video in low quality, useful for faster testing (default: False)\n  --light-mode          Enable light-mode with white background (default: False)\n  --invert-branches     Invert positioning of branches where applicable (default: False)\n  --speed SPEED         A multiple of the standard 1x animation speed (ex: 2 = twice as fast, 0.5 = half as fast) (default: 1)\n```\n\n## Command Examples\nDefault - draw 8 commits starting from `HEAD`, from oldest to newest:\n\n```console\n$ cd path/to/project/root\n$ git-story\n```\n\nCustomize the start commit and number of commits, and reverse their display order:\n\n```console\n$ git-story --commit-id a1b2c3 --commits=6 --reverse\n```\n\nInvert the branch orientation, if multiple branches exist in the commit range:\n\n```console\n$ git-story --invert-branches\n```\n\nAdd an intro with custom title and logo:\n\n```console\n$ git-story --commit-id dev --commits=10 --show-intro --title \"My Git Repo\" --logo path/to/logo.png\n```\n\nAdd an outro with custom text and logo:\n\n```console\n$ git-story --show-outro --outro-top-text \"My Git Repo\" --outro-bottom-text \"Thanks for watching!\" --logo path/to/logo.png\n```\n\nCustomize the output video directory location:\n\n```console\n$ git-story --media-dir=path/to/output\n```\n\nUse light mode for white background and black text, instead of the default black background with white text:\n\n```console\n$ git-story --light-mode\n```\n\nGenerate output video in low quality to speed up rendering time (useful for repeated testing):\n\n```console\n$ git-story --low-quality\n```\n\n## Installation\nSee **QuickStart** section for details on installing manim and GitPython dependencies. Then run:\n\n```console\n$ pip3 install git-story\n```\n\n## Learn More\nLearn more about this tool on the [git-story project page](https://initialcommit.com/tools/git-story).\n\n## Authors\n**Jacob Stopak** - on behalf of [Initial Commit](https://initialcommit.com)\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finitialcommit-com%2Fgit-story","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finitialcommit-com%2Fgit-story","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finitialcommit-com%2Fgit-story/lists"}