{"id":13393678,"url":"https://github.com/defunkt/github-gem","last_synced_at":"2025-05-14T12:07:18.012Z","repository":{"id":384418,"uuid":"1653","full_name":"defunkt/github-gem","owner":"defunkt","description":"`github` command line helper for simplifying your GitHub experience.","archived":false,"fork":false,"pushed_at":"2024-04-01T14:31:19.000Z","size":673,"stargazers_count":1131,"open_issues_count":71,"forks_count":187,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-05-08T02:01:56.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://github.com","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/defunkt.png","metadata":{"files":{"readme":"README.md","changelog":"History.txt","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2008-02-28T09:35:34.000Z","updated_at":"2025-04-03T15:09:42.000Z","dependencies_parsed_at":"2024-05-30T07:12:30.975Z","dependency_job_id":"9ada3a68-81b1-4319-aa0a-3b4b2ed858fb","html_url":"https://github.com/defunkt/github-gem","commit_stats":{"total_commits":382,"total_committers":44,"mean_commits":8.681818181818182,"dds":0.7198952879581152,"last_synced_commit":"8ef0c3087d2e5d1f6fe328c06974d787b47df423"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defunkt%2Fgithub-gem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defunkt%2Fgithub-gem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defunkt%2Fgithub-gem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/defunkt%2Fgithub-gem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/defunkt","download_url":"https://codeload.github.com/defunkt/github-gem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254140747,"owners_count":22021219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-30T17:00:58.539Z","updated_at":"2025-05-14T12:07:17.969Z","avatar_url":"https://github.com/defunkt.png","language":"Ruby","funding_links":[],"categories":["Ruby","Command line"],"sub_categories":[],"readme":"# The GitHub Gem\n\nThis gem works hand-in-hand with GitHub's API to help you out.\n\nCatch us in the #github room on freenode if you want to get involved.  Or just fork and send a pull request.\n\n## Getting started\n\n    $ gem install github\n\nRun it:\n\n    $ github \u003ccommand\u003e \u003cargs\u003e\n    $ gh \u003ccommand\u003e \u003cargs\u003e\n\n## Requirements\n\nOnly installs pure JSON gem `json_pure` by default. If you are able to install the C-extension `json` gem, it will use that instead.\n\nTry:\n\n    gem install json github\n\n\n## Pulling Upstream Changes\n\nLet's say you just forked `github-gem` on GitHub from defunkt.\n\n    $ gh clone YOU/github-gem\n    $ cd github-gem\n    $ gh pull defunkt\n\nThis will setup a remote and branch for defunkt's repository at master. \nIn this case, a 'defunkt/master' branch.\n\nIf defunkt makes some changes you want, simply `github pull defunkt`.  This will\nleave you in the 'defunkt/master' branch after pulling changes from defunkt's\nremote.  After confirming that defunkt's changes were what you wanted, run `git\ncheckout master` and then `git merge defunkt/master` to merge defunkt's changes\ninto your own master branch.  In summary:\n\n    $ gh pull defunkt\n    $ gh checkout master\n    $ gh merge defunkt/master\n\nIf you've already reviewed defunkt's changes and just want to merge them into your \nmaster branch, use the `merge` flag:\n\n    $ gh pull --merge defunkt\n\n## Fetching and Evaluating Downstream Changes\n\nIf you are the maintainer of a project, you will often need to fetch commits\nfrom other developers, evaluate and/or test them, then merge them into the\nproject.\n\nLet's say you are 'defunkt' and 'mojombo' has forked your 'github-gem' repo,\nmade some changes and issues you a pull request for his 'master' branch.\n\nFrom the root of the project, you can do:\n\n    $ gh fetch mojombo master\n  \nThis will leave you in the 'mojombo/master' branch after fetching his commits.\nYour local 'mojombo/master' branch is now at the exact same place as mojombo's \n'master' branch. You can now run tests or evaluate the code for awesomeness.\n\nIf mojombo's changes are good, you'll want to merge your 'master' (or another\nbranch) into those changes so you can retest post-integration:\n\n    $ gh merge master\n  \nTest/analyze again and if everything is ok:\n  \n    $ gh checkout master\n    $ gh merge mojombo/master\n  \nThe latter command will be a fast-forward merge since you already did the\nreal merge previously.\n\n## Network Patch Queue\n\nThe github gem can also show you all of the commits that exist on any fork of your\nproject (your network) that you don't have in your branch yet.  In order to see\nthe list of the projects that have commits you do not, you can run:\n\n    $ gh network list\n\nWhich will show you all the forks that have changes.  If you want to see what those\nchanges are, you can run:\n\n    $ gh network commits\n\nwhich will show you something like this:\n\n    9582b9 (jchris/gist)             kevin@sb.org          Add gist binary                        4 months ago\n    c1a6f9 (jchris/gist~1)           kevin@sb.org          Tweak Rakefile spec tasks to be a bi   4 months ago\n    d3c332 (jchris/gist~2)           kevin@sb.org          Pull out two helpers into the shared   4 months ago\n    8f65ab (jchris/gist~3)           kevin@sb.org          Extract command/helper spec assistan   4 months ago\n    389dbf (jchris/gist~4)           kevin@sb.org          Rename ui_spec to command_spec         4 months ago\n    670a1a (jchris/gist~5)           kevin@sb.org          Hoist the specs into a per-binary sp   4 months ago\n    6aa18e (jchris/gist~6)           kevin@sb.org          Hoist commands/helpers into a per-co   4 months ago\n    ee013a (luislavena/master)       luislavena@gmail.com  Replaced STDOUT by $stdout in specs.   2 weeks ago\n    d543c4 (luislavena/master~3)     luislavena@gmail.com  Exclude package folder.                8 weeks ago\n    a8c3eb (luislavena/master~5)     luislavena@gmail.com  Fixed specs for open under Windows.    5 months ago\n    33d003 (riquedafreak/master)     enrique.osuna@gmail.  Make sure it exists on the remote an   5 weeks ago\n    157155 (riquedafreak/master~1)   enrique.osuna@gmail.  Updated specs.                         5 weeks ago\n    f44e99 (riquedafreak/master~3)   enrique.osuna@gmail.  Only work with a clean branch.         3 months ago\n\nThese are all the commits that you don't have in your current branch that have been\npushed to other forks of your project.  If you want to incorporate them, you can use:\n\n    $ gh cherry-pick ee013a\n\nfor example to apply that single patch to your branch.  You can also merge a branch, \nif you want all the changes introduced in another branch:\n\n    $ gh merge jchris/gist\n\nThe next time you run the 'github network commits' command, you won't see any of the \npatches you have cherry-picked or merged (or rebased).  If you want to ignore a \ncommit, you can simply run:\n  \n    $ gh ignore a8c3eb\n\nThen you won't ever see that commit again. Or, if you want to ignore a range of commits,\nyou can use the normal Git revision selection shorthands - for example, if you want\nto ignore all 7 jchris/gist commits there, you can run:\n\n    $ gh ignore ..jchris/gist\n\nYou can also filter the output, if you want to see some subset.  You can filter by project,\nauthor and date range, or (one of the cooler things) you can filter by whether the patch\napplies cleanly to your branch head or not.  For instance, I can do this:\n\n    $ ./bin/github network commits --applies\n\n    ca15af (jchris/master~1)         jchris@grabb.it       fixed github gemspecs broken referen   8 weeks ago\n    ee013a (luislavena/master)       luislavena@gmail.com  Replaced STDOUT by $stdout in specs.   2 weeks ago\n    157155 (riquedafreak/master~1)   enrique.osuna@gmail.  Updated specs.                         5 weeks ago\n    f44e99 (riquedafreak/master~3)   enrique.osuna@gmail.  Only work with a clean branch.         3 months ago\n\n    $ ./bin/github network commits --applies --project=riq\n\n    157155 (riquedafreak/master~1)   enrique.osuna@gmail.  Updated specs.                         5 weeks ago\n    f44e99 (riquedafreak/master~3)   enrique.osuna@gmail.  Only work with a clean branch.         3 months ago\n\nPretty freaking sweet.  Also, you can supply the --shas option to just get a list of \nthe shas instead of the pretty printout here, so you can pipe that into other \nscripts (like 'github ignore' for instance).\n\n\n## Issues\n\nIf you'd like to see a summary of the open issues on your project:\n\n    $ gh issues open\n\n    -----\n    Issue #135 (2 votes): Remove Node#collect_namespaces\n    *  URL: http://github.com/tenderlove/nokogiri/issues/#issue/135\n    *  Opened 3 days ago by tenderlove\n    *  Last updated about 1 hour ago\n  \n    I think we should remove Node#collect_namespaces.  Since namespace names are not unique, I don't know that this method is very useful.\n    -----\n    Issue #51 (0 votes): FFI: support varargs in error/exception callbacks\n    *  URL: http://github.com/tenderlove/nokogiri/issues/#issue/51\n    *  Opened 4 months ago by flavorjones\n    *  Last updated about 1 month ago\n    *  Labels: ffi, mdalessio\n  \n    we should open JIRA tickets for vararg support in FFI callbacks\n  \n    then we should format the libxml error messages properly in the error/exception callbacks\n    -----\n\nIf you want to additionally filter by time:\n\n    $ gh issues open --after=2009-09-14\n\nOr filter by label:\n\n    $ gh issues open --label=ffi\n\n## Contributors\n\n* defunkt\n* maddox\n* halorgium\n* kballard\n* mojombo\n* schacon\n* drnic\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefunkt%2Fgithub-gem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefunkt%2Fgithub-gem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefunkt%2Fgithub-gem/lists"}