8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

lazygitチートシート[ターミナル(TUI)でgitをキーボードで操作して快適なgitライフを送ろう!]

Last updated at Posted at 2024-10-07

皆さんはgit操作どのように行っていますか?

  • GUIアプリ
    • githubdesktop
    • SourceTree
    • VSCode/JetbrainsIDEの内蔵機能
  • CLI(ターミナル等でコマンド直打ち)
    • git add
    • git commit
    • git push
    • git reflog などなど

本記事はgitをCUI環境でGUIっぽく操作するというTUIアプリケーションに属するlazygitの使い方をまとめて説明する.

SourceTree(GUIソフト)を使ってgit操作したい方はこちらから

他のチートシート

git/gh コマンド(gitコマンド以外にもgitの概念も書いてあります)

今回は特にgitのことを扱うのでこの記事の内容がわかること前提で話します.add commit pushなど基本的なコマンド以外にもlazygitはreflogなど普段あまり使わないコマンドも出てくるので,一読しておくことをお勧めします.

Docker コマンド

ステータスコード

TypeScript

SQL

Go

Vim

プルリクエスト・マークダウン記法チートシート

ファイル操作コマンドチートシート

VSCode Github Copilot拡張機能

OpenAI Assistants API

他のシリーズ記事

TypeScriptで学ぶプログラミングの世界
プログラミング言語を根本的に理解するシリーズです.

情報処理技術者試験合格への道[IP・SG・FE・AP]
情報処理技術者試験の単語集です.

IAM AWS User クラウドサービスをフル活用しよう!
AWSのサービスを例にしてバックエンドとインフラ開発の手法を説明するシリーズです.

TUIとは?CUI/GUIとはどう違うの?

TUI(Text-based User Interface)とは
テキストベースのユーザーインターフェースの一種である.CUI(Character User Interface)やCLI(Command Line Interface)の発展形として位置づけられ,テキストモードでありながら,GUI(Graphical User Interface)な要素を取り入れたインターフェースを提供する.

TUIの主な特徴は,テキスト文字を使用して画面上に疑似的なグラフィカル要素を表現することにある.例えば,ボックス,枠線,メニュー,ボタンなどをASCII文字や拡張文字セットを用いて描画する.これにより,純粋なテキストベースのインターフェースよりも視覚的に構造化された情報表示が可能となる.また,キーボード操作を主体としつつ、カーソルやハイライトなどを用いて,インタラクティブな操作感を提供する.ユーザーは矢印キーやタブキーでメニュー項目間を移動したり,エンターキーで選択を確定したりすることができる.今回のlazygitとlazydockerはVimのキー操作ができるので,Vimをよく使う人も使いやすい仕様になっている.(Vimの使い方はこちらから(Vimチートシート))

TUIの利点としては,GUIに比べて軽量であり,リソースの少ない環境や,リモートサーバーへのSSH接続時などでも快適に動作する点が挙げられる.また,キーボード操作が主体であるため,熟練ユーザーにとっては非常に効率的な操作が可能となる.

代表的なTUIアプリケーション
テキストエディタのVimやEmacs,ファイルマネージャーのMidnight Commander,そして先述のlazygitなどがある.

lazygitインストール方法

lazygit

Windows

  • Scoop を使ったインストール
scoop install lazygit
  • Chocolatey を使ったインストール
choco install lazygit

macOS
Homebrew を使ったインストール

brew install lazygit

コマンドでインストールできない場合

  • 手動インストール
    GitHubのリリースページから最新のそれぞれのOS用のバイナリをダウンロードし,PATHの通ったディレクトリに配置する
  • Go言語がインストールされている環境
go install github.com/jesseduffield/lazygit@latest

インストール後は、ターミナルまたはコマンドプロンプトで対象のディレクトリで以下のコマンドをと入力して実行すれば良い.
lazygitの場合

lazygit

前提状態

本記事で使用するgitリポジトリの構成は以下のファイル構成で説明する.

.
└── README.md

masterブランチでREADME.mdを作成し,そこからdevelopブランチを作成し,developブランチからfeature/001ブランチと,feature/002ブランチを作成した状態で説明する.

lazygit開始方法

対象のディレクトリで以下のコマンドを実行するとlazygitを始めることができる.

lazygit

終了するには,
qキー

開始したら以下の画面になっている.

スクリーンショット 2024-09-29 23.40.30.png

上下左右の移動はvim操作でも矢印キーでもOK
1つ戻る際はescキー
決定はreturnキー
実行はspaceキーが基本操作

モード切り替え

1, 2, 3, 4, 5を押してモードを切り替える.マウスクリックでも切り替えができる.
また,各モードにおいてコマンドのヘルプを出すには?を押すと確認できる.
スクリーンショット 2024-10-01 11.38.28.png

ヘルプのコマンドを選択してreturnを押すと

gitリポジトリ・作業ブランチの確認・操作履歴とコミット履歴の確認

1を押すと現在のgitリポジトリと現在のブランチを確認できる.

スクリーンショット 2024-09-29 23.40.30.png

このモードでaを押すと操作履歴とコミット履歴を確認できる.(git log --oneline --graph --all)
image.png

変更差分(git status)・ワークツリー・サブモジュールの表示

2を押すと現在の変更差分を表示する(git status)
image.png

差分を作ると以下のようになる.
image.png

もう一度2を押すとワークツリーの情報が出てくる
image.png

さらにもう一度2を押すとサブモジュールの情報が出てくる.
image.png

2を押した時の挙動
変更差分→ワークツリー→サブモジュール

ローカル・リモートブランチ(git branch (-a))・変更履歴(git log)・リモートリポジトリのURL(git remote -v)・タグ(git tag)の表示

3を押すとローカルブランチを表示する(git branch)
選択中のブランチにおける変更履歴も表示する(git log)
スクリーンショット 2024-09-30 9.23.28.png

もう一度3を押すとリモートブランチを表示する(git branch -a)
リモートリポジトリのURLも表示する(git remote -v)

image.png

対象のリモートブランチ名(origin)を選択し,returnを押すとリモートブランチが表示される.

image.png

緑色になっているブランチがローカルにないブランチ

3を押し,tagsのページまで行くと,とタグが表示される(git tag)

image.png

3を押した時の挙動
ローカルブランチ・変更履歴→リモートブランチ・リモートリポジトリのURL→タグ

コミット履歴・詳細差分(git show)・操作履歴(git reflog)の表示

4を押すとコミット履歴を表示する.(git log --pretty=format:"%h %s" --graph)
選択中のコミットにおける詳細差分も表示する(git show)

image.png

もう一度4を押すとローカルリポジトリにおける操作履歴を表示できる(git reflog)

image.png

4を押した時の挙動
コミット履歴・詳細差分→操作履歴

変更差分の待避(git stash list)の表示

5を押すと変更差分を一時退避したものを一覧表示する(git stash list)

image.png

ファイルをステージング(git add)・ファイルのステージングを解除(git restore --staged)

2を押してFilesのページに移動.ステージングしたいファイルを選択し,spaceを押す(git add)

image.png

ファイル名が緑色になったらステージングしている証拠

スクリーンショット 2024-09-30 11.38.53.png

ステージングしているファイルを選択し,spaceを押すとステージング解除

スクリーンショット 2024-09-30 11.39.31.png

その他 add restore --staged操作

  • 全てのファイルをステージングしたい場合はaを押す.(git add .)

  • 全てのファイルのステージングを取り消したい場合は全てのファイルをステージングした状態でaを押す.(git restore --staged .)

コミットする(git commit)

addした後にcを押したら,コミットメッセージを入力できる.入力後returnを押したらステージングしたファイルをコミットする.
image.png

4のcommitsにコミット履歴が追加される.pushしていないコミットは赤色になっている.また1のstatusに↑1がつき,リモートリポジトリと比較して1コミット先行していることがわかる.
image.png

1つ前のコミットを編集する(git commit --amend)

addした後にA(大文字)を押すと1つ前のコミットにファイルを追加できる.
image.png

ローカルブランチでのリセット(git reset)

2のfilesでgを押すとローカルブランチを上流ブランチ(通常はリモートブランチ)の状態にリセットする(git reset @{upstream})

--soft --mixed --hardのオプションも選択できる

image.png

3のLocal branches(またはremote branches)でgを押すと現在のブランチを選択したブランチの状態にリセットする.(git reset [branchname])
スクリーンショット 2024-09-30 12.28.38.png

4のcommitsでgを押すと選択したコミットまでリセットする.(git reset [commithash])
スクリーンショット 2024-09-30 12.32.49.png

ローカルブランチを作成し,切り替える(git checkout -b)

3のLocal branchesでnを押し,ブランチ名を入力しreturnを押すとローカルブランチを作成し,切り替える操作ができる.
image.png

ローカルブランチの切り替え(git checkout)

3のLocal branchesで切り替え先のブランチを選択し,spaceでブランチを切り替える.
image.png

ローカルブランチの削除(git branch -d)

3のLocal branchesで削除したいブランチを選択し,dを押し,一番上のDelete local branchを選択し,returnを押すと削除できる
image.png

現在の作業ブランチそのものは削除できないので他のブランチに移動してから削除すること

ローカルブランチのマージ(git merge)

3のLocal branchesでマージ先のブランチに切り替える,その後,マージ元のブランチを選択してMを押してマージする.マージするオプションはいつもの3種類から選べる.詳しくはこちらから
image.png

作業中の変更を一時保存(待避)(git stash)

一時退避する(git stash push)

2のfilesでsを押すと,現状の変更を一時退避できる.
image.png
すると,5のstashのところに保存され,変更差分がなくなる.
スクリーンショット 2024-10-05 14.36.48.png

退避した変更を適用する(git stash apply)

5のstashで対象のstashを選択し,spaceを押すと選択しているstashを適用する.
IMG_3358.jpeg

2のfilesに変更差分が戻り,5のstashから適用したstash(「stashしたよ〜」)が消えてなく,listに残っていることがわかる.
image.png

退避した変更を適用してstashリストから削除(git stash pop)

5のstashで対象のstashを選択し,gを押すと選択しているstashをpop(stashを適用してリストから削除)する.
IMG_3360.jpeg

2のfilesに変更差分が戻り,5のstashから適用したstash(「stashしたよ〜」)が消えていることがわかる.
image.png

stashを削除(git stash drop)

5のstashで削除したい対象のstashを選択し,dを押すとstashを削除できる.
IMG_3358.jpeg

リモートブランチをチェックアウト(git checkout)

3のRemoteに移動する.
image.png

対象のリモートブランチ名(origin)を選択し,returnを押すとリモートブランチが表示される.
image.png

リモートブランチを選択してreturnを押すとリモートブランチのコミット履歴(log)が出る.リモートブランチ一覧に戻るにはescを押す.
image.png

チェックアウトしたいリモートブランチを選択してspaceを押して,new local branchを押し,returnを押すとチェックアウトできる
スクリーンショット 2024-10-05 16.36.43.png

ローカルからリモートへの同期(git push)

任意のモード(どこでもいい)でSHIFT+Pを押すと現在の作業ブランチでpushできる.
image.png

このとき3のlocal branches の作業ブランチの右側がPushingになる

リモートからローカルへの同期(git pull)

任意のモード(どこでもいい)でpを押すと現在の作業ブランチでpullできる.
image.png

このとき3のlocal branches の作業ブランチの右側がPullingになる

とりあえずここまでの動作がわかれば普段の開発で行うgit操作はできる.これ以外の操作をしたい場合はgit/ghコマンドチートシートで記載しているコマンドを実行した方が良いと思う.ただし,普段から多用するadd commit はlazygitを使うと快適なgitライフが送れるようになると思う.

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?