{"id":33185686,"url":"https://github.com/aviator-co/av","last_synced_at":"2026-06-04T00:00:33.060Z","repository":{"id":37079004,"uuid":"482969498","full_name":"aviator-co/av","owner":"aviator-co","description":"A command line tool to manage stacked PRs with Aviator","archived":false,"fork":false,"pushed_at":"2026-06-01T22:00:17.000Z","size":11999,"stargazers_count":487,"open_issues_count":72,"forks_count":41,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-06-01T23:14:47.556Z","etag":null,"topics":["git","github","pull-requests"],"latest_commit_sha":null,"homepage":"https://aviator.co","language":"Go","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/aviator-co.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"2022-04-18T19:22:00.000Z","updated_at":"2026-06-01T21:25:22.000Z","dependencies_parsed_at":"2026-04-22T00:00:41.432Z","dependency_job_id":null,"html_url":"https://github.com/aviator-co/av","commit_stats":{"total_commits":239,"total_committers":15,"mean_commits":"15.933333333333334","dds":0.5899581589958158,"last_synced_commit":"d26a1c3551b0c09b29a3ff92ef161a403dcbc1b0"},"previous_names":[],"tags_count":93,"template":false,"template_full_name":null,"purl":"pkg:github/aviator-co/av","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviator-co%2Fav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviator-co%2Fav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviator-co%2Fav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviator-co%2Fav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aviator-co","download_url":"https://codeload.github.com/aviator-co/av/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviator-co%2Fav/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33884734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"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":["git","github","pull-requests"],"created_at":"2025-11-16T05:00:20.098Z","updated_at":"2026-06-04T00:00:33.034Z","avatar_url":"https://github.com/aviator-co.png","language":"Go","funding_links":[],"categories":["\u003ca name=\"online\"\u003e\u003c/a\u003eOnline search and resources"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"resources/isotype-color.svg\" width=\"100\"\u003e\n  \u003cp\u003e\u003cstrong\u003eav:\u003c/strong\u003e CLI to manage Stacked PRs\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n`av` is a command-line tool that helps you manage your stacked PRs on GitHub. It\nallows you to create a PR stacked on top of another PR, and it will\nautomatically update the dependent PR when the base PR is updated. Read more at\n[Rethinking code reviews with stacked\nPRs](https://www.aviator.co/blog/rethinking-code-reviews-with-stacked-prs/).\n\n# Community\n\nJoin our discord community: [https://discord.gg/TFgtZtN8](https://discord.gg/NFsYWNzXcH)\n\n# Features\n\n- Create a PR that is stacked on another PR.\n- Visualize the entire stack of PRs.\n- Interactively navigate through the PR stack.\n- Rebase the dependent PR when the base PR is updated.\n- Remove the merged PRs from the stack.\n- Split a PR into multiple PRs.\n- Split a commit into multiple commits.\n- Reorder the PRs and commits in the stack.\n\n# Demo\n\n![Demo](resources/demo.gif)\n\n# Agent plugins\n\nThe [aviator-co/agent-plugins](https://github.com/aviator-co/agent-plugins) repository provides plugins for coding agents like Claude Code. The `av-cli` skill teaches agents how to use `av` for stacked PR workflows, including:\n\n- Creating branches\n- Committing changes\n- Syncing stacks\n- Managing PRs using `av` commands instead of raw `git`\n\n# Usage\n\n\u003e [!TIP]\n\u003e Complete documentation is available at [docs.aviator.co](https://docs.aviator.co/aviator-cli).\n\nCreate a new branch and make some changes:\n\n```sh\n$ av branch feature-1\n$ echo \"Hello, world!\" \u003e hello.txt\n$ av commit -A -m \"Add hello.txt\"\n```\n\nCreate a PR:\n\n```sh\n$ av pr\n```\n\nCreate a new branch and make some changes. Create another PR that depends on the\nprevious PR:\n\n```sh\n$ av branch feature-2\n$ echo \"Another feature\" \u003e\u003e hello.txt\n$ av commit -a -m \"Update hello.txt\"\n$ av pr\n```\n\nVisualize the PR stack:\n\n```sh\n$ av tree\n  * feature-2 (HEAD)\n  │ https://github.com/octocat/Hello-World/pull/2\n  │\n  * feature-1\n  │ https://github.com/octocat/Hello-World/pull/1\n  │\n  * master\n```\n\nMerge the first PR:\n\n```sh\n$ gh pr merge feature-1\n```\n\nSync the stack:\n\n```sh\n$ av sync\n\n  ✓ GitHub fetch is done\n  ✓ Restack is done\n\n    * ✓ feature-2 f9d85fe\n    │\n    * master 7fd1a60\n\n  ✓ Pushed to GitHub\n\n    Following branches do not need a push.\n\n      feature-1: PR is already merged.\n\n    Following branches are pushed.\n\n      feature-2\n        Remote: dbae4bd Update hello.txt 2024-06-11 16:41:18 -0700 -0700 (2 minutes ago)\n        Local:  f9d85fe Update hello.txt 2024-06-11 16:43:41 -0700 -0700 (7 seconds ago)\n        PR:     https://github.com/octocat/Hello-World/pull/2\n\n  ✓ Deleted the merged branches\n\n    Following merged branches are deleted.\n\n      feature-1: f2335eec783b54226a7ab90f4af1c9b8309f8b61\n\n```\n\n# Installation\n\n`av` is available for macOS and Linux. In order to interact with GitHub, `av`\nuses the GitHub API token. If you have [GitHub CLI](https://cli.github.com/)\ninstalled, `av` will use the token automatically from the GitHub CLI. It is\nrecommended to install both.\n\n## macOS (Homebrew)\n\nFirst, if not already done, [install Homebrew](https://brew.sh).\n\nThen install using Homebrew tap.\n\n```sh\nbrew install gh aviator-co/tap/av\n```\n\n## Arch Linux (AUR)\n\nPublished as [`av-cli-bin`](https://aur.archlinux.org/packages/av-cli-bin) in\nAUR.\n\n```sh\nyay av-cli\n```\n\n## Debian/Ubuntu\n\nAdd Aviator to your APT repositories.\n\n```sh\necho \"deb [trusted=yes] https://apt.fury.io/aviator/ /\" \u003e \\\n/etc/apt/sources.list.d/fury.list\n```\n\nAnd then apt install.\n\n```sh\nsudo apt update\nsudo apt install av\n```\n\n### Alternatively\n\nIf you'd prefer you can download the `.deb` file from the [releases page](https://github.com/aviator-co/av/releases).\n\n```sh\napt install ./av_$VERSION_linux_$ARCH.deb\n```\n\n## RPM-based systems\n\nAdd the following file `/etc/yum.repos.d/fury.repo`.\n\n```conf\n[fury]\nname=Gemfury Private Repo\nbaseurl=https://yum.fury.io/aviator/\nenabled=1\ngpgcheck=0\n```\n\nRun the following command to confirm the configuration is working.\n\n```sh\nyum --disablerepo=* --enablerepo=fury list available\n```\n\nAnd then run yum install.\n\n```sh\nsudo yum install av\n```\n\n### Alternatively\n\nIf you'd prefer you can download the `.rpm` file from the [releases page](https://github.com/aviator-co/av/releases).\n\n```sh\nrpm -i ./av_$VERSION_linux_$ARCH.rpm\n```\n\n## Binary download\n\nDownload the binary from the [releases page](https://github.com/aviator-co/av/releases).\nExtract the archive and add the executable to your PATH.\n\n# Setup\n\n1. Set up the GitHub CLI for GitHub authentication:\n\n   ```sh\n   gh auth login\n   ```\n\n   Or you can create a Personal Access Token as described in the\n   [Configuration](https://docs.aviator.co/aviator-cli/configuration#github-personal-access-token)\n   section.\n\n2. Set up the `av` CLI autocompletion:\n\n   ```sh\n   # Bash\n   source \u003c(av completion bash)\n   # Zsh\n   source \u003c(av completion zsh)\n   ```\n\n3. Initialize the repository:\n\n   ```sh\n   av init\n   ```\n\n# Upgrade\n\n## macOS (Homebrew)\n\n```sh\nbrew update\nbrew upgrade av\n```\n\n## Debian/Ubuntu\n\n```sh\nsudo apt update\nsudo apt upgrade\n```\n\n## RPM-based systems\n\n```sh\nyum update\n```\n\n# Example commands\n\n| Command             | Description                                          |\n| ------------------- | ---------------------------------------------------- |\n| `av adopt`          | Adopt a branch that is not created from `av branch`. |\n| `av branch`         | Create a new child branch from the current branch.   |\n| `av commit --amend` | Amend the last commit and rebase the children.       |\n| `av pr`             | Create or update a PR.                               |\n| `av reorder`        | Reorder the branches.                                |\n| `av reparent`       | Change the parent of the current branch.             |\n| `av restack`        | Rebase the branches to their parents.                |\n| `av split-commit`   | Split the last commit.                               |\n| `av switch`         | Check out branches interactively.                    |\n| `av sync --all`     | Fetch and rebase all branches.                       |\n| `av tree`           | Visualize the PRs.                                   |\n\n# How it works\n\n`av` internally keeps tracks of the PRs, their associated branches and their dependent branches.\nFor each branch, it remembers where the branch started (the base commit of the branch). When\nthe base branch is updated, `av` rebases the dependent branches on top of the\nnew base branch using the remembered starting point as the merge base.\n\n# Learn more\n\n- [Rethinking code reviews with stacked PRs](https://www.aviator.co/blog/rethinking-code-reviews-with-stacked-prs/)\n- [Issue Tracker](https://github.com/aviator-co/av/issues)\n- [Changelog](https://github.com/aviator-co/av/releases)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviator-co%2Fav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faviator-co%2Fav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviator-co%2Fav/lists"}