{"componentChunkName":"component---src-pages-markdown-remark-fields-slug-js","path":"/engineering/github-cli-tool/","result":{"data":{"markdownRemark":{"id":"594e8ca3-33d1-5382-a73c-df84d49c633c","excerpt":"The GitHub CLI is a recent GitHub released tool that takes tasks of issue / PR management to the terminal. It will be a useful tool that will put more of our…","html":"<p><em>The <a href=\"https://cli.github.com/\">GitHub CLI</a> is a recent GitHub released tool that takes tasks of issue / PR management to the terminal. It will be a useful tool that will put more of our workflow for software creation into the textual domain rather than the visual domain. It’s just called <code>gh</code>.</em></p>\n<p>*<strong>*Installation of GitHub CLI 💡**</strong></p>\n<p>GitHub CLI has releases with significant operating systems, visit the installation page and find instructions on how to install GitHub CLI for your operating system.</p>\n<p>For [Windows] and [macOS], you will use the package managers to update and maintain GitHub CLI, and for <a href=\"https://github.com/cli/cli/releases/tag/v1.0.0\">Linux</a> users, you may need to grab the software from the latest release website.</p>\n<p>Here are examples of the installation instructions for each compatible platform:</p>\n<p>→ Windows</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">scoop bucket add github-gh https://github.com/cli/scoop-gh.gitscoop install gh</span></span></code></pre>\n<p>→ macOS</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">brew install github</span></span></code></pre>\n<p>→ Debian/Ubuntu Linux</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">sudo apt install git &amp;&amp; sudo dpkg -i gh_*_linux_amd64.deb</span></span></code></pre>\n<p>→ Fedora/Centos Linux</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">sudo yum localinstall gh_*_linux_amd64.rpm</span></span></code></pre>\n<p>→ Arch Linux</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">yay -S github-cli</span></span></code></pre>\n<p>You’ll need to authenticate your account after you install GitHub CLI. Running any command would activate this process of authentication(via OAuth). Well, you can use Git CLI.\n<img src=\"/c544032f3e88cc5209a8125c3b27f776/Authorize.webp\" alt=\"Auhtorize\"></p>\n<p>*<strong>*What is CLI really doing? 🤔**</strong></p>\n<p>The GitHub CLI lets you handle issues/ PRs / repositories from inside your console. Let’s have a look at it:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">gh issue [status, list, view, create]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">gh pr [status, list, view, checkout, create]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">gh repo [view, create, clone, fork]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">gh </span><span class=\"mtk11\">help</span></span></code></pre>\n<p><img src=\"/bfff3e4e4d8d95ee5e5250d51865507a/ghpr.webp\" alt=\"gh pr status\"></p>\n<p><em>It should be said that gh is not the same stuff as git. It’s because <code>gh</code> just adds GitHub tools to the terminal. Version management is yet to be managed with git.</em></p>\n<p>*<strong>*CLI Commands ➫**</strong></p>\n<p>We’re going to cover a bunch of exciting commands. Let’s use the official <a href=\"https://github.com/angular/angular\">Angular.js repo</a> to run <code>gh</code> commands</p>\n<p>Clone the <code>Angular</code> repo, and navigate to the repository. You can either clone the repo through HTTPS/ ssh/ Git CLI. I’m going to clone the repo through <code>git CLI</code> since we are working on GIT CLI.</p>\n<p>Let’s execute the <code>$gh issue --help</code> see what commands are available.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">gh issue --help  </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">Work with GitHub issues</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">USAGE</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  gh issue &lt;command&gt; [flags]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">CORE COMMANDS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  close:      Close issue</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  create:     Create a new issue</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  list:       List and filter issues </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> this repository</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  reopen:     Reopen issue</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  status:     Show the status of relevant issues</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  view:       View an issue</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">FLAGS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  -R, --repo OWNER/REPO   Select another repository using the OWNER/REPO format</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">INHERITED FLAGS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  --help   Show </span><span class=\"mtk11\">help</span><span class=\"mtk1\"> </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> </span><span class=\"mtk11\">command</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">ARGUMENTS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  An issue can be supplied as an argument </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> any of the following </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  formats:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - by number, e.g. </span><span class=\"mtk8\">&quot;123&quot;</span><span class=\"mtk1\">; or</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - by URL, e.g. </span><span class=\"mtk8\">&quot;https://github.com/OWNER/REPO/issues/123&quot;</span><span class=\"mtk1\">.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">EXAMPLES</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh issue list</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh issue create --label bug</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh issue view --web</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">LEARN MORE</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  Use </span><span class=\"mtk8\">&#39;gh &lt;command&gt; &lt;subcommand&gt; --help&#39;</span><span class=\"mtk1\"> </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> more information about a command.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  Read the manual at https://cli.github.com/manual</span></span></code></pre>\n<p>It’s Time to view Problems/issues in the angular repo.😁</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">gh issue list</span></span></code></pre>\n<p><img src=\"/a8c6b14edbb42faabcbec7dcfef82a15/angular%20issue.webp\" alt=\"Angular issue\"></p>\n<p>*<strong>*Pull Requests 🤖**</strong></p>\n<p>It is now possible to build a Pull Request (PR) on the terminal. You will perform <code>$gh pr create</code> right after you have committed a feature or bug branch. This interactively creates the pull request.😉</p>\n<p>Let’s execute the <code>$gh pr --help</code> see what commands are available.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">Work with GitHub pull requests</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">USAGE</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  gh pr &lt;command&gt; [flags]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">CORE COMMANDS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  checkout:   Check out a pull request </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> git</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  checks:     Show CI status </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> a single pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  close:      Close a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  create:     Create a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  diff:       View changes </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  list:       List and filter pull requests </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> this repository</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  merge:      Merge a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  ready:      Mark a pull request as ready </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> review</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  reopen:     Reopen a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  review:     Add a review to a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  status:     Show status of relevant pull requests</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  view:       View a pull request</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">FLAGS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  -R, --repo OWNER/REPO   Select another repository using the OWNER/REPO format</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">INHERITED FLAGS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  --help   Show </span><span class=\"mtk11\">help</span><span class=\"mtk1\"> </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> </span><span class=\"mtk11\">command</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">ARGUMENTS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  A pull request can be supplied as an argument </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> any of the following formats:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - by number, e.g. </span><span class=\"mtk8\">&quot;123&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - by URL, e.g. </span><span class=\"mtk8\">&quot;https://github.com/OWNER/REPO/pull/123&quot;</span><span class=\"mtk1\">; or</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - by the name of its head branch, e.g. </span><span class=\"mtk8\">&quot;patch-1&quot;</span><span class=\"mtk1\"> or </span><span class=\"mtk8\">&quot;OWNER:patch-1&quot;</span><span class=\"mtk1\">.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">EXAMPLES</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh pr checkout 353</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh pr create --fill</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh pr view --web</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">LEARN MORE</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  Use </span><span class=\"mtk8\">&#39;gh &lt;command&gt; &lt;subcommand&gt; --help&#39;</span><span class=\"mtk1\"> </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> more information about a command.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  Read the manual at https://cli.github.com/manual</span></span></code></pre>\n<p><strong>**</strong>Let’s view some of it:👀<strong>**</strong></p>\n<p>current PR’s in the repo:</p>\n<p><code>$ gh pr list</code>\n<img src=\"/a66b580d697bfaaa40b84a7e84b04dc3/angular%20pr.webp\" alt=\"Angular pullrequest\"></p>\n<p><strong>*</strong>Let’s view an individual pr:<strong>*</strong></p>\n<p>I’m going with the first pull request <code>#38899</code>. Through gh cmd $ gh pr view <code>38899</code>.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">refactor(compiler): simplify visitor logic </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> attributes</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">Draft • atscott wants to merge 1 commit into master from testrefactor</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">Labels: cla: yes, comp: compiler, state: WIP, target: patch</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">Milestone: needsTriage</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">The logic </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> computing identifiers, specifically </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> bound attributes can  </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  be simplified by using the value span of the binding rather than the </span><span class=\"mtk11\">source</span><span class=\"mtk1\"> span.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">View this pull request on GitHub: https://github.com/angular/angular/pull/38899</span></span></code></pre>\n<p>*<strong>*Repository 🤖**</strong></p>\n<p>Let’s execute the <code>$gh repo --help</code> see what commands are available</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">Work with GitHub repositories</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">USAGE</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  gh repo &lt;command&gt; [flags]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">CORE COMMANDS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  clone:      Clone a repository locally</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  create:     Create a new repository</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  fork:       Create a fork of a repository</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  view:       View a repository</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">INHERITED FLAGS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  --help   Show </span><span class=\"mtk11\">help</span><span class=\"mtk1\"> </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> </span><span class=\"mtk11\">command</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">ARGUMENTS</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  A repository can be supplied as an argument </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> any of the following formats:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - </span><span class=\"mtk8\">&quot;OWNER/REPO&quot;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  - by URL, e.g. </span><span class=\"mtk8\">&quot;https://github.com/OWNER/REPO&quot;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">EXAMPLES</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh repo create</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh repo clone cli/cli</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  $ gh repo view --web</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">LEARN MORE</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  Use </span><span class=\"mtk8\">&#39;gh &lt;command&gt; &lt;subcommand&gt; --help&#39;</span><span class=\"mtk1\"> </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> more information about a command.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  Read the manual at https://cli.github.com/manual</span></span></code></pre>\n<p>It is better to clone a repository using the gh command than with the git command. I have done this above. Only through gh cmd, I have cloned angular repo.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">$ gh repo clone angular/angular</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">$ gh repo fork</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">- Forking angular/angular...</span></span></code></pre>\n<p>Start functioning. You should create a new PR after this (<code>$gh pr create</code>)! It’s sort of remarkable that all of that element is now available in the terminal!😍</p>\n<p>*<strong>*Gist 🐱‍🚀**</strong></p>\n<p>It is now simple to create a gist on GitHub from the terminal using the CLI cmd.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"bash\" data-index=\"12\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">gh gist create &lt; file &gt;</span></span></code></pre>\n<p>*<strong>*Conclusion🙀**</strong></p>\n<p><a href=\"https://cli.github.com/\">Git CLI's</a> primary objective is to \"minimize context switching\" by allowing you to continue inside your terminal/console, rather than opening your browser to access <a href=\"https://github.com/\">GitHub</a>. For additional functionality and knowledge on using the current resources, you may link to the <a href=\"https://cli.github.com/manual/\">manual</a>.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n</style>","headings":[],"fields":{"slug":"/engineering/github-cli-tool/"},"frontmatter":{"metatitle":null,"metadescription":null,"description":"Learn about GitHub CLI tool and how/when to use it","title":"GitHub CLI Tool ⚒","canonical":null,"date":"October 05, 2020","updated_date":null,"tags":["Cloud","GIT","Version control"],"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5384615384615385,"src":"/static/67f9c8247a3c5142d5ef1f220d1e512a/96324/GitHub%20CLI%20Tool.webp","srcSet":"/static/67f9c8247a3c5142d5ef1f220d1e512a/1c9b5/GitHub%20CLI%20Tool.webp 200w,\n/static/67f9c8247a3c5142d5ef1f220d1e512a/f1752/GitHub%20CLI%20Tool.webp 400w,\n/static/67f9c8247a3c5142d5ef1f220d1e512a/96324/GitHub%20CLI%20Tool.webp 757w","sizes":"(max-width: 757px) 100vw, 757px"}}},"author":{"id":"Saravanan Vijayamuthu","github":"SaravananVijayamuthu","bio":"Software Developer intern at Digilocker. Looking for a challenging role in a reputable organization to utilize my technical, database, and management skills for the growth of the organization as well as to enhance my knowledge about new and emerging trends in the IT sector.","avatar":null}}}},"pageContext":{"id":"594e8ca3-33d1-5382-a73c-df84d49c633c","fields__slug":"/engineering/github-cli-tool/","__params":{"fields__slug":"engineering"}}},"staticQueryHashes":["1171199041","1384082988","1711371485","1753898100","2100481360","229320306","23180105","528864852"]}