{"id":28264020,"url":"https://github.com/kojiishi/git-iblame","last_synced_at":"2026-05-23T08:03:58.890Z","repository":{"id":290227651,"uuid":"973771631","full_name":"kojiishi/git-iblame","owner":"kojiishi","description":"Interactive enhanced `git blame` command line tool.","archived":false,"fork":false,"pushed_at":"2026-04-19T17:25:08.000Z","size":285,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-19T18:37:02.211Z","etag":null,"topics":["blame","cli","command","command-line-tool","git"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kojiishi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-27T17:49:45.000Z","updated_at":"2026-04-19T17:25:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"4e1a4b79-a752-4742-a092-5de87c3549c4","html_url":"https://github.com/kojiishi/git-iblame","commit_stats":null,"previous_names":["kojiishi/git-iblame"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/kojiishi/git-iblame","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kojiishi%2Fgit-iblame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kojiishi%2Fgit-iblame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kojiishi%2Fgit-iblame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kojiishi%2Fgit-iblame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kojiishi","download_url":"https://codeload.github.com/kojiishi/git-iblame/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kojiishi%2Fgit-iblame/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32018764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["blame","cli","command","command-line-tool","git"],"created_at":"2025-05-20T08:12:27.621Z","updated_at":"2026-04-25T15:02:04.718Z","avatar_url":"https://github.com/kojiishi.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI-badge]][CI]\n[![crate-badge]][crate]\n[![docs-badge]][docs]\n\n[CI-badge]: https://github.com/kojiishi/git-iblame/actions/workflows/rust-ci.yml/badge.svg\n[CI]: https://github.com/kojiishi/git-iblame/actions/workflows/rust-ci.yml\n[crate-badge]: https://img.shields.io/crates/v/git-iblame.svg\n[crate]: https://crates.io/crates/git-iblame\n[docs-badge]: https://docs.rs/git-iblame/badge.svg\n[docs]: https://docs.rs/git-iblame/\n\n# git-iblame\n\nAn interactive enhanced [`git blame`] command line tool.\n\nThe `git-iblame` allows you to find\nchanges to the lines of your interests interactively,\nnot only the last change as [`git blame`] can do,\nbut also all the past changes,\nup to the initial commit.\n\nFeatures:\n\n* The interactive \"current line\" specifies the line of your interests.\n* Easy and instant traversals to older or newer trees of the line.\n* Inspect the commit that modified the line.\n* Deleted lines are also shown for inspections.\n* See all commits that modifies the file.\n\nThe `git-iblame` is built for responsive interaction.\nLengthy operations such as\ncomputing all the history of a file run in background.\nOld annotations which takes time to read from the disk\ncome up incrementally while you are browsing.\n\nTo make the traversals of the history responsive,\nespecially for large repositories,\nthe `git-iblame` has its own file history engine.\nThis engine is built on top of the fundamental git operations\nwithout using the logic in the [`git blame`].\n\nWhen traversing to older or newer trees,\nthe `git-iblame`'s engine can re-compute the history for the trees instantly\nfrom its own data structure in memory.\n\n[`git blame`]: https://git-scm.com/docs/git-blame\n[git2]: https://docs.rs/git2/latest/git2/\n[libgit2]: https://libgit2.org/\n\n# Install\n\n## Prerequisites\n\n* [Install Rust] if it's not installed yet.\n\n[install Rust]: https://rustup.rs/\n\n## From [`crates.io`][crate]\n\n```shell-session\ncargo install git-iblame\n```\n\n## From [github]\n\n```shell-session\ncargo install --git https://github.com/kojiishi/git-iblame\n```\n\n[github]: https://github.com/kojiishi/git-iblame\n\n## From local checkout\n\nAfter changing the current directory to the checkout directory:\n```shell-session\ncargo install --path .\n```\n\n# Usages\n\nTo start an interactive `git blame` session,\nspecify the path of an existing file in a git repository.\n```shell-session\ngit-iblame \u003cpath-to-file\u003e\n```\nAlternatively,\nthe `\u003cpath-to-file\u003e` can be a relative path to a repository.\nIn this case, the current directory must be in the repository.\nFor example, following two `git-iblame` commands open the same file.\n```shell-session\ngit-iblame ~/src/repository/file-at-repo-root.txt\ncd ~/src/repository/some/sub/directory\ngit-iblame file-at-repo-root.txt\n```\n\n## Interactive Session\n\nThe output is similar to `git blame`,\nwith the current line highlighted.\nYou can move the current line,\nor traverse the git history of the current line.\n\nPlease see the help by pressing the `h` key\nfor the full commands and their key bindings.\nMajor commands are:\n* **h**: Show the help.\n* **q**: Quit the program.\n* **s**: Show the commit at the current line.\n* **d**: Show the diff of the current file of the commit at the current line.\n* **c**: Copy the hash of the current line commit to the clipboard.\n* **→** (**Right**): Traverse to the parent commit of the commit at the current line.\n* **←** (**Left**): Undo the last traversal;\n  i.e., traverse back to the last newer tree.\n\n# Change History\n\nPlease see the [release notes].\n\n[release notes]: https://github.com/kojiishi/git-iblame/releases\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkojiishi%2Fgit-iblame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkojiishi%2Fgit-iblame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkojiishi%2Fgit-iblame/lists"}