GitHub Copilot X Overview and Installation
The original GitHub Copilot has already broken a lot of ground for what it was able to do by bringing AI into your tools and has made a significant impact worldwide, helping people and businesses build better and faster. While it seems like there’s a new GPT model every week, Copilot X uses GPT-4, allowing us to take advantage of the latest from OpenAI.
To get started with Copilot for CLI, you’ll first need to sign up for the waitlist.
Next, install the GitHub Copilot CLI globally using npm and authenticate via the GitHub Copilot CLI auth.
npm install -g @githubnext/github-copilot-cli
github-copilot-cli auth
After authentication, add the following aliases to your environment to make it easier to use the different tools:
alias ??='copilot-cli query'
alias git?='copilot-cli query --tool git'
alias gh?='copilot-cli query --tool gh'
Note: To use gh?
, you must have the GitHub CLI installed
Putting Copilot CLI to the Test
With everything installed and configured, let’s take Copilot CLI for a spin by running several tests.
Copilot essentially provides three different methods for how you can interact with it:
??
for any shell commandgit?
for Git-specific commandsgh?
for GitHub CLI commands
Listing Files in a Directory
For a simple test, let’s list all the files in a directory using the ??
command:
?? list all of the files in this directory
Running the command confirms the query and lists the files as expected.
Renaming Multiple Files
For a slightly more complicated task, let’s rename all files in a directory by replacing a specific word.
?? rename all of the files to replace "video" with "solid"
Copilot generates a command that loops through each file, moves them, and uses sed
to replace the word “video” with “solid”. Run the command, and you’ll see that the files are now updated with the new word.
Clearing Out Node Modules Directories
As developers, we often accumulate many node_modules
directories across our projects. To recursively remove all node_modules
directories using Copilot, run:
?? recursively remove all node_modules directories
The generated command uses find
to locate all node_modules
directories and rm -rf
to remove them.
Working with Git Commands
For those who frequently work with Git, Copilot provides a way to recall and execute Git commands more easily.
To change the message of the last Git commit, run:
git? change the message of the last commit
Copilot will suggest the git commit --amend
command, which you can then execute and update the commit message as needed.
To view the first commit in the Git repository, run:
git? what was the first commit to this repository
Copilot will generate a command using git log --reverse --oneline
, which, when executed, will display the first commit in the repository.
Working with GitHub CLI Commands
For those who use the GitHub CLI, Copilot can streamline many tasks, such as managing pull requests and issues.
To view all open pull requests for a GitHub repository, run:
gh? what are the open pull requests for this repository
Copilot will suggest using gh pr list
, which will display all open pull requests when executed.
To view all closed pull requests, run:
gh? what are all of the closed pull requests for this repository
The generated command adds the --state closed
flag to filter the list of pull requests accordingly.
To check out the code from a specific pull request, run:
gh? check out pull request number ###
Copilot will generate a command using gh pr checkout
, allowing you to check out the pull request locally.
Finally, to create a new issue on GitHub, run:
gh? create a new issue with a title "Super Important Bug" and a description "This is causing huge issues for my app (test)"
The suggested command will include the appropriate flags for the title and description, and when executed, will create the issue on GitHub.
Embracing AI in Development
While AI tools like Copilot X may not be perfect in every situation and often require some clarification, they offer developers powerful ways to streamline tasks, create better code, and ultimately build better experiences for users. These tools are unlikely to replace developers completely, but will empower us to accomplish more at a faster pace.