{"id":35244633,"url":"https://github.com/felipec/git-smartlist","last_synced_at":"2026-04-02T02:19:01.588Z","repository":{"id":66400301,"uuid":"243429088","full_name":"felipec/git-smartlist","owner":"felipec","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-20T09:12:11.000Z","size":42,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-20T10:27:10.436Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/felipec.png","metadata":{"files":{"readme":"README.asciidoc","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}},"created_at":"2020-02-27T04:18:40.000Z","updated_at":"2024-04-20T10:27:11.855Z","dependencies_parsed_at":"2023-02-21T02:31:16.084Z","dependency_job_id":null,"html_url":"https://github.com/felipec/git-smartlist","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/felipec/git-smartlist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipec%2Fgit-smartlist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipec%2Fgit-smartlist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipec%2Fgit-smartlist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipec%2Fgit-smartlist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felipec","download_url":"https://codeload.github.com/felipec/git-smartlist/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipec%2Fgit-smartlist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31294527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:43:37.129Z","status":"online","status_checked_at":"2026-04-02T02:00:08.535Z","response_time":89,"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":[],"created_at":"2025-12-30T05:55:19.512Z","updated_at":"2026-04-02T02:19:01.580Z","avatar_url":"https://github.com/felipec.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"This tool helps create typical revisions (e.g. `master..@`), so that you\ndon't have to.\n\nFor example, if you want to quickly see the commits of the current branch, you\ncan do the following:\n\n  git log --oneline master..@\n\nBut what if your current branch is not based on master, but say \"development\"?\nYou can type `development..@`, but it gets tedious to do this for every branch.\n\nYou could of course configure the upstream tracking branch of you current branch,\nand then you can just do:\n\n  git log --oneline @{upstream}..@\n\nThat's *if* you have configured the upstream tracking branch.\n\n`git-smartlist` can figure out what revision you would want with the\n`from-upstream` option:\n\n  git smartlist log from-upstream\n\nThen you can create an alias for that:\n\n  git config --global alias.ls 'smartlist log from-upstream'\n\nIn order so you don't have to keep track of all this, or type anything,\n`git-smartlist` allows you to just do:\n\n  git ls\n\nThere are five shorthands that `git smartlist` can help with.\n\n== Installation ==\n\nSimply copy the script anywhere in your '$PATH' and make it\nexecutable, or run `make install` which will install it by default to\nyour '~/bin/' directory (make sure it's in your '$PATH').\n\n== Aliases ==\n\nThe best way to use `git smartlist` is to setup aliases to the different modes,\nfor example, `git lb` would be the equivalent of `git smartlist log branches`.\n\nFirst you will need a good log alias, for example 'lg':\n\n  git config --global alias.lg 'log --oneline --decorate --boundary --graph'\n\nThen you can add the following to your configuration (`git config --global --edit`):\n\n  [alias]\n    ls = smartlist lg specific\n    lm = smartlist lg from\n    lc = smartlist lg from-upstream\n    la = smartlist lg all\n    lb = smartlist lg branches\n    ln = smartlist lg negate-upstreams\n\nYou can pick any name you want, and only the modes you need, but the two I use the most are:\n\n  git ls # shows only the commits of the current branch\n  git lb # shows the commits from all the local branches\n  git lb fc/ # shows the commits from the local branches that start with fc/\n\n== Usage ==\n\n=== specific ===\n\nThis mode is basically saying: show me this specific branch/branches.\n\nBy default, it's the equivalent of:\n\n  $ git smartlist echo specific\n  =\u003e @{upstream}..@\n\nIf you specify a branch:\n\n  $ git smartlist echo specific feature-a\n  =\u003e feature-a@{upstream}..feature-a\n\nHowever, if more than one branch is specified:\n\n  $ git smartlist echo specific next feature-a\n  =\u003e next feature-a --not $merge_base\n\nSo, basically it's a mixture of `from-upstream` and `branches`.\n\n=== all ===\n\nThis mode is equivalent to:\n\n  $ git smartlist echo all\n  =\u003e --branches --remotes --not $merge_base\n\n=== branches ===\n\nBy default this mode is the equivalent of:\n\n  $ git smartlist echo branches\n  =\u003e --branches --not $merge_base\n\nHowever, multiple branches can be specified\n\n  $ git smartlist echo branches next feature-a\n  =\u003e next feature-a --not $merge_base\n\nPrefixes and namespaces can be specified too:\n\n  $ git smartlist echo branches fc/\n  =\u003e --branches=fc/ --not $merge_base\n\n=== from ===\n\nBy default this mode is the equivalent of:\n\n  $ git smartlist echo from\n  =\u003e master..@\n\nBut you can specify the branch:\n\n  $ git smartlist echo from feature-a\n  =\u003e master..feature-a\n\nYou can also specify the starting point:\n\n  $ git smartlist echo from feature-a next\n  =\u003e next..feature-a\n\n=== from-upstream ===\n\nBy default this mode is the equivalent of:\n\n  $ git smartlist echo from-upstream\n  =\u003e @{upstream}..@\n\nIf there's no upstream configured, `master` is used by default.\n\nYou can also specify the branch:\n\n  $ git smartlist echo from-upstream feature-a\n  =\u003e feature-a@{upstream}..feature-a\n\n=== negate-upstreams ===\n\nThis is the equivalent of multiple `from-upstream` commands; all their upstreams\nare negated:\n\n  $ git smartlist echo negate-upstreams next feature-a\n  =\u003e next@{u}..next feature@{u}..feature\n\n== Configuration ==\n\n`git smartlist` can be configured globally, or per repository.\n\n=== smartlist.merge-base ===\n\nWhether to use the merge-base functionality. If not set\nthe `branches` subcommand would simply do `--branches`.\n\nDefault: true\n\n=== smartlist.friendly ===\n\nWhether to use friendly names. If not set git IDs (SHA-1) are used instead of\nrefnames.\n\nDefault: false\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipec%2Fgit-smartlist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelipec%2Fgit-smartlist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipec%2Fgit-smartlist/lists"}