🍺 BREW Explorer

← all formulae

git-absorb

brew install git-absorb v0.9.0 BSD-3-Clause

Automatic git commit --fixup

109
30-day installs · #3341
382
90-day · #3208
2.0k
365-day · #2824
5.6k
★ GitHub stars · updated 6mo ago

Runtime dependencies

Build dependencies

GitHub topics

git rebase

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "asciidoctor",
    "pkgconf",
    "rust"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [
    "libgit2"
  ],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Automatic git commit --fixup",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:38:02+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "git-absorb",
  "github_default_branch": "master",
  "github_last_commit_at": "2026-02-14T03:44:46Z",
  "github_readme_excerpt": "# git absorb\n\nThis is a port of Facebook\u0027s [`hg absorb`](https://www.mercurial-scm.org/repo/hg/rev/5111d11b8719), which I first read about on [mozilla.dev.version-control](https://groups.google.com/forum/#!msg/mozilla.dev.version-control/nh4fITFlEMk/ZNXgnAzxAQAJ):\n\n\u003e * Facebook demoed `hg absorb` which is probably the coolest workflow enhancement I\u0027ve seen to version control in years. Essentially, when your working directory has uncommitted changes on top of draft changesets, you can run `hg absorb` and the uncommitted modifications are automagically folded (\"absorbed\") into the appropriate draft ancestor changesets. This is essentially doing `hg histedit` + \"roll\" actions without having to make a commit or manually make history modification rules. The command essentially looks at the lines that were modified, finds a changeset modifying those lines, and amends that changeset to include your uncommitted changes. If the changes can\u0027t be made without conflicts, they remain uncommitted. This workflow is insanely useful for things like applying review feedback. You just make file changes, run `hg absorb` and the mapping of changes to commits sorts itself out. It is magical. \n\n## Elevator Pitch\n\nYou have a feature branch with a few commits. Your teammate reviewed the branch and pointed out a few bugs. You have fixes for the bugs, but you don\u0027t want to shove them all into an opaque commit that says `fixes`, because you believe in atomic commits. Instead of manually finding commit SHAs for `git commit --fixup`, or running a manual interactive rebase, do this:\n\n```\ngit add $FILES_YOU_FIXED\ngit absorb --and-rebase\n```\n\n`git absorb` will automatically identify which commits are safe to modify, and which staged changes belong to each of those commits. It will then write `fixup!` commits for each of those changes.\n\nWith the `--and-rebase` flag, these fixup commits will be automatically integrated into the corresponding ones. Alternatively, you can check its output manually if y",
  "github_repo": "tummychow/git-absorb",
  "github_stars": 5587,
  "github_topics": [
    "git",
    "rebase"
  ],
  "homepage": "https://github.com/tummychow/git-absorb",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 109,
  "installs_365d": 2005,
  "installs_90d": 382,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "BSD-3-Clause",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "git-absorb",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 3341,
  "rank_365d": 2824,
  "rank_90d": 3208,
  "raw_hash": "e4b3e6723bb3f6a0",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/g/git-absorb.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": "HEAD",
  "version_stable": "0.9.0",
  "versioned_formulae": [],
  "why_use_this": null
}