こんにちは。時雨風です。
ここ最近、githubの便利さに気づきました。privateリポジトリでも無制限にファイルを保存できるうえに、その他管理機能や便利機能が充実しています。最近ではプロジェクトを作成したら、ほぼgithubにアップロードしています。
しかし、たくさん使うほど便利じゃない部分も少しずつわかってくるもので…
例えば、リポジトリのクローンをする際。
githubのページを開いて、ログイン認証し、リポジトリを探す、といった操作でボタンをポチポチするのが面倒になってきたのです。
1回であればそれほどではありませんが、プロジェクトも増え、さがす回数もそれなりに。
なにか方法はないかと探していた時にみつけたのが、ghと呼ばれるCLIアプリです。
これを使用するとコマンド一つでgithubを操れるようになります。めっちゃ便利です。
この記事ではそのghについてやghコマンド、他のgithub公式ツールとの違いについてまとめました。
githubとは?
github公式ドキュメントにはこのような記述があります。
GitHubは、バージョン管理および共同作業用のコードホスティングサービスです。GitHubを使えば、どこからでもプロジェクトに参加することができます。
Hello World-GitHub Docs
(原文)
GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere.
これでは、よくわかりませんね…
単語としては、"Git"、"バージョン管理"、"コードホスティング"がわかれば理解できそうです。
まずは"Git"と"バージョン管理"についてです。
Gitとは、分散型バージョン管理システムの一つで、もともとLinuxのソースコードを効果的に管理するために開発されました。
Gitを使ったバージョン管理|サル先生のGit入門【プロジェクト管理ツールBacklog】
Gitでは、ファイルの状態を好きなときに更新履歴として保存しておくことができます。そのため、一度編集したファイルを過去の状態に戻したり、編集箇所の差分を表示したりすることができます。
Gitとは、ファイルの変更履歴を管理するアプリで、バージョン管理システムとも呼ばれるということがわかります。
続いて、"コードホスティング"ですが、"コード"はソースコードをさし、プログラム文やそのファイルのことです。
"ホスティング"はサーバーを借りてインターネットでコンテンツを公開することです。
つまり、"コードホスティング"はプログラムファイルをインターネット上で公開することを指します。
GitHubは、バージョン管理および共同作業用のコードホスティングサービスです。GitHubを使えば、どこからでもプロジェクトに参加することができます。
もう一度読むと、なんとなく意味がわかりますよね。
つまり、githubとはこんなサービスです。
- gitを使用する
- コードを保存
- ファイルの変更履歴を管理
- チームで共同作業ができる
- インターネット上で実行できる
(他にも、継続的インテグレーションを支援する便利機能がたくさんありますが、ここでは省略します。)
さっそく、githubを使いたい!
まずは自分にあった道具を選びましょう。
現在、githubを操作できる公式アプリは3つあります。
初心者はGithub DesktopとWeb版を、上級者はターミナル上でghとgitを使用し補助的にweb版を使用することをおすすめします。
Github(web版)、Github DesktopとGithub CLI(gh)の違い
それぞれ用途が違うので、それを解説していきます。
機能 | github CLI | github Desktop | github webアプリケーション |
---|---|---|---|
認証方法 | SSH | github Desktop | ブラウザ |
git機能を含む | x | O | x |
リポジトリの作成 | O | O | O |
リポジトリの操作 | O | x | O |
issuesの操作 | O | web版を開く | O |
Pull requestsの操作 | O | web版を開く | O |
Projectsの操作 | x | x | O |
github APIの操作 | O | x | x |
この表を見るとわかるように、それぞれのアプリで得意な分野が分かれます。
Github (web版)
- ブラウザから操作可能
- githubのほぼ全ての機能が使用可能
- gitに関する操作はできない
githubのweb版では、githubの機能のほぼ全てを操作できるようになっています。しかし、ブラウザからローカルファイルの操作はできないためにgit機能は付属しません。
欠点としては、ブラウザでサーバーとのややりとりが必須になるため、動作が遅くなりがちな点です。
Github Desktop
- gitの操作(commit,push,fetch,pull,branchなどの操作)が可能
- アプリケーションなので、GUIで簡単に操作できる
- 初心者におすすめ
github Desktopでは、web版ではできないgit機能を主軸としています。githubリポジトリの作成も行えます。
guiアプリであり、gitの操作に慣れていない初心者でもわかりやすいアプリであると言えます。
Github CLI (gh)
- ターミナルから使用する
- gitと組み合わせて使用するとほぼ全ての操作をターミナルから行える
(commit,push,fetch,pull,branchなどに関連する操作はgitコマンド) - ailasを設定できる(ショートカットのようなもの)
- gitの認証が簡単に可能
- 動作が軽量
github CLIは、web版と同じようなことができます。
web版と異なるのは、ターミナルで操作するため全ての動作が軽量ということです。
また、コマンドラインツールのgitと併用するとターミナルからほぼ全ての操作が行えます。ターミナル以外にブラウザやgit用のアプリを開かなくてもよくなり、「アプリを立ち上げすぎてパソコンの画面が固まった」ということを減らせます。
欠点は、ターミナルからの操作はコマンドを調べる必要があるために慣れるのに時間がかかる場合があるという点です。
ここからはgithub CLIについて詳しく説明します。
ghとは?
github CLIのことです。ターミナルから使用し、ghというコマンドで機能を呼び出せます。
公式リポジトリでは、「gh はコマンドライン上の GitHub です。プルリクエストやイシュー、その他の GitHub のコンセプトを、あなたがすでに git やコードを操作している場所の隣にあるターミナルで実現します。」と紹介されています。
gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code.
cli/cli: GitHub’s official command line tool
インストールはこちらから
便利な補完機能を設定する際はこちら
この章ではMacでのインストールを前提に解説しています。
mac(zsh)を使用している場合の設定
brew install zsh-completions
ターミナルのタブを開くたび有効になるように、設定を~/.zshrc
に出力します。
echo "# zsh-completionsを有効にする if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi" >> ~/.zshrc
$echo $fpath
よりzsh-completionsの補完ファイルがあるディレクトリを探します。
時雨風の環境では下記でした。
/opt/homebrew/share/zsh-completions
補完ファイルを出力します。
gh completion -s zsh > /opt/homebrew/share/zsh-completions
補完ファイルが出力され、入力の途中でもtabを押すことで既に入力された単語から補完を行うようになります。
ここからはよく使う操作コマンドの一例を紹介します。
ログイン
まずはgithubにghからログインします。
$gh auth login
このログイン機能がghの一つ目の目玉です。
というのもこの操作を行うことでコマンドラインツールであるgitの認証も行えるのです。
これを正攻法?で行うとすると、こちらのページにある手順をしなければならず、結構な手間が発生します。
こちらのコマンドを使用すると、ブラウザにコードを入力するだけでお手軽なのです!
リポジトリの操作
ghを使用してリポジトリを操作します。gh repo --help
でリポジトリ操作に関するヘルプを表示できます。
Work with GitHub repositories.
USAGE
gh repo <command> [flags]
CORE COMMANDS
archive: Archive a repository
clone: Clone a repository locally
create: Create a new repository
delete: Delete a repository
deploy-key: Manage deploy keys in a repository
edit: Edit repository settings
fork: Create a fork of a repository
list: List repositories owned by user or organization
rename: Rename a repository
sync: Sync a repository
view: View a repository
INHERITED FLAGS
--help Show help for command
ARGUMENTS
A repository can be supplied as an argument in any of the following formats:
- "OWNER/REPO"
- by URL, e.g. "https://github.com/OWNER/REPO"
EXAMPLES
$ gh repo create
$ gh repo clone cli/cli
$ gh repo view --web
LEARN MORE
Use 'gh <command> <subcommand> --help' for more information about a command.
Read the manual at https://cli.github.com/manual
主に使用するのはclone(カレントディレクトリにクローン),create(リポジトリの作成),view(リポジトリをターミナルかブラウザで表示),list(リポジトリの一覧表示)だと思います。
--help
のオプションを指定するとヘルプが表示されます。
例えば、listの使い方がわからない場合は、$
と打ち込みます。gh repo list --help
リポジトリの一覧を表示する
リポジトリの一覧表示にはlistを使用します。
何もしてしないと自分のアカウントが持っているリポジトリが表示されます。
$ gh repo list
他アカウントや組織アカウントのリポジトリを表示するにはlistの後にownerを指定します。
$ gh repo list tokiukaze
リポジトリのブラウザ表示
githubからcloneしたディレクトリ上で下記コマンドを行うとブラウザでgithubのリポジトリを表示してくれます。
$ gh repo view --web
クローンを行う
で確認したリポジトリを指定してカレントディレクトリにcloneすることができます。gh repo list
$gh repo clone tokiukaze/python-exa
リポジトリの作成
下記コマンドで対話的にリポジトリを作成できます。
$gh repo create
リポジトリやその可視性(private/public)を指定すれば、1行のコマンドで作成できます。
$gh repo create test-repo --private
コマンドは紹介した以外にも、多数存在します。
紹介しきれないので、詳しくは実際にコマンドを叩いてみるか公式ページをみてみるとたくさんのコマンドを知ることができます。
こんなこともできるのかってくらいたくさんあります。試してみるとおもしろですよ。
まとめ
ここまで、ghの紹介をさせていただきました。
コマンドを覚える必要があるものの、githubの操作をかなり快適で簡単なものにできるツールでした。
最後まで記事を読んでいただきありがとうございました。
コメント