{"id":13463247,"url":"https://github.com/osheroff/git-spelunk","last_synced_at":"2026-03-04T04:31:36.389Z","repository":{"id":11820173,"uuid":"14371964","full_name":"osheroff/git-spelunk","owner":"osheroff","description":"git-spelunk, an interactive git history tool","archived":false,"fork":false,"pushed_at":"2023-09-20T13:35:36.000Z","size":172,"stargazers_count":47,"open_issues_count":3,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-22T16:29:19.531Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/osheroff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2013-11-13T18:05:49.000Z","updated_at":"2025-04-01T05:34:36.000Z","dependencies_parsed_at":"2024-01-05T21:59:29.832Z","dependency_job_id":null,"html_url":"https://github.com/osheroff/git-spelunk","commit_stats":{"total_commits":93,"total_committers":6,"mean_commits":15.5,"dds":"0.30107526881720426","last_synced_commit":"b37b93dc3b9ed1370f895753ae51e6431ce63c58"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/osheroff/git-spelunk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osheroff%2Fgit-spelunk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osheroff%2Fgit-spelunk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osheroff%2Fgit-spelunk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osheroff%2Fgit-spelunk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osheroff","download_url":"https://codeload.github.com/osheroff/git-spelunk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osheroff%2Fgit-spelunk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30071687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: 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":[],"created_at":"2024-07-31T13:00:48.901Z","updated_at":"2026-03-04T04:31:36.363Z","avatar_url":"https://github.com/osheroff.png","language":"Ruby","readme":"# git-spelunk\n\nThis is git-spelunk, an interactive tool for exploring blame history.\n\nInstall with `gem install git_spelunk` (requires Ruby 2+).\n\n## Huh?\n\n`git blame` is a great tool for determining code responsibility.  But sometimes when you\nfire up git-blame, you'll find yourself in a loop of `git-blame`, `git-show`, and then\n`git-blame` again in order to find the true owner of a line of code.\n`git-spelunk` is the tool for situations like this, when you want to\nskip past syntactic and refactoring commits to find the true owner of a line, or see how\na piece of source code has evolved over time.\n\n## Guh?\n\nIt's easier to show you.\n\n```\ngit spelunk lib/git_spelunk/offset.rb\n```\n\n![git spelunk, main page](images/screenshot_1.png)\n\nYou can see we've highlighted line 45.  `git-spelunk` here is telling us that this line was introduced\nin commit 33465d2.  You can also see that all other lines that were involved in 33465d2 are picked out\nin green.  The output of `git show` is present as well for adding more context to the information.\n\nNow we press '['.  What we're asking here is \"show me the file just before 33465d2\" was introduced,\nessentially replacing the content of the current screen with `git blame [file] 33465d2~1`.\n\n![git spelunk, back one](images/screenshot_2.png)\n\nThere's other stuff to do; you can hit \"s\" to do a `git show` of the commit underneath the cursor, you\ncan search and page through the file like you would with \"less\".\n\n# License\nMIT\n","funding_links":[],"categories":["Git Tools","Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosheroff%2Fgit-spelunk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosheroff%2Fgit-spelunk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosheroff%2Fgit-spelunk/lists"}