エンジニア

Gitでよく使うCUIコマンド14選!

GitのCUIコマンドとは?

GitのCUI(Command Line Interface)コマンドは、バージョン管理を効率的に行うための強力なツールです。
GUIも便利ですが、CUIの方が詳細な操作ができるため、開発者には欠かせないスキルとなってます。
私も普段はSourceTreeを使ってるのですが、複雑なgit操作したり、サーバに接続したりする際はCUIでの操作が必要となるため、その備忘録としても記事としてまとめていきます!

よく使うGitコマンド

以下にGitでよく使うCUIコマンド14個を紹介します。

git init

まずは基本のgit initコマンドです。
このコマンドは、新しいGitリポジトリを作成する際に使います。初めてプロジェクトをGitで管理するなら、これが出発点になります!

$ git init

実行結果:

Initialized empty Git repository in /path/to/your/project/.git/

これで、ディレクトリがGitリポジトリとして初期化されました!

git clone

次に、既存のリポジトリをコピーするgit cloneです。これは、リモートリポジトリの内容をローカルに持ってくる時に使います。
プロジェクトに参加する時に必須のコマンドです。

$ git clone https://github.com/username/repository.git

実行結果:

Cloning into 'repository'...
remote: Counting objects: 100, done.
remote: Compressing objects: 100% (80/80), done.
Receiving objects: 100% (100/100), 1.23 MiB | 1.23 MiB/s, done.

これでリポジトリがローカルにコピーされます。

git add

変更をステージングエリアに追加するgit addもよく使います。
ファイルをコミットする前に、まずはgit addで準備しましょう。全ての変更を追加するにはgit add .で行えます。

$ git add .

git commit

変更をリポジトリに記録するgit commitも基本です。
このコマンドで、作業内容をメッセージと共に保存します。メッセージは分かりやすく書くのがポイントです!

$ git commit -m "Initial commit"

実行結果:

[master (root-commit) abcdef1] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 filename.txt

変更がコミットされました!

git status

現在の状態を確認するgit statusも重要です。
どのファイルがステージングされているか、まだ変更があるかをチェックできます。作業中に何度も使うことになりますね。

$ git status

実行結果:

On branch master
nothing to commit, working tree clean

現在の状態が確認できます!

git push

ローカルの変更をリモートリポジトリに送信するgit push
これでチーム全体に変更を共有できます。非常によく使うコマンドです。

$ git push origin master

実行結果:

Counting objects: 5, done.
Writing objects: 100% (5/5), 400 bytes | 400.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://github.com/username/repository.git
 * [new branch]      master -> master

リモートリポジトリに変更が反映されました!

git pull

リモートリポジトリの最新の変更を取得するgit pullも必須です。
チームの他のメンバーの変更を取り込み、自分の作業環境を最新にすることができます。

$ git pull origin master

実行結果:

From https://github.com/username/repository
 * branch            master     -> FETCH_HEAD
Already up to date.

これでリモートリポジトリの変更が取得されました!

git branch

ブランチを作成・管理するgit branchもよく使います。
新機能を追加する時やバグ修正の際に、作業を分けるために便利です。ブランチの作成はgit branch <ブランチ名>で行います。
以下のコマンドで新しくブランチを作れます。

git branch feature-branch

git merge

ブランチを統合するにはgit merge を使います。
作業が終わったら、メインブランチに統合して一つのプロジェクトにまとめます。

$ git merge feature-branch

実行結果:

Updating abcdef1..1234567
Fast-forward
 filename.txt | 1 +
 1 file changed, 1 insertion(+)

ブランチが統合されました!

git log

最後に、リポジトリの履歴を確認するgit logです。
過去のコミットメッセージや変更履歴を追うことができます。作業の振り返りに活用します。

$ git log

実行結果:

commit 1234567 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date:   Mon May 21 10:00:00 2024 +0900

    Add feature

commit abcdef1
Author: Your Name <your.email@example.com>
Date:   Mon May 21 09:00:00 2024 +0900

    Initial commit

リポジトリの履歴が表示されました!

git history

git historyは、git logに似ていますが、より簡潔に過去のコミットを一覧表示します。
特にGUIツールや拡張機能で使われることが多いです。CUIでの使用例として、git log --onelineを紹介します。

$ git log --oneline

実行結果:

3f6a4b1 (HEAD -> master) Add feature
9b1c6d7 Revert "Initial commit"
abcdef1 Initial commit

簡潔な形式でコミット履歴が表示されました!

git revert

git revertは、指定したコミットの変更を打ち消す新しいコミットを作成します。
ミスをした場合や特定の変更を取り消したいときに使います。

$ git revert abcdef1<commit hash>

実行結果:

[master 9b1c6d7] Revert "Initial commit"
 1 file changed, 1 deletion(-)

指定したコミットの変更を取り消す新しいコミットが作成されました!

git checkout

git checkoutは、特定のブランチやコミットに作業ディレクトリを切り替えるためのコマンドです。
新しいブランチを作成することもできます。使用頻度の高い必須のコマンドですね。

$ git checkout -b new-branch

実行結果:

Switched to a new branch 'new-branch'

新しいブランチに切り替えました!

git cherry-pick

git cherry-pickは、特定のコミットを現在のブランチに適用するためのコマンドです。
必要な変更だけを選んで適用する際に便利です。

$ git cherry-pick 1234567

実行結果:

[master 3f6a4b1] Add feature
 Date: Mon May 21 10:00:00 2024 +0900
 1 file changed, 1 insertion(+)

指定したコミットの変更が現在のブランチに適用されました!

まとめ

以上が、Gitでよく使うCUIコマンドの紹介でした。
GitのCUIコマンドは、効率的なバージョン管理に欠かせないツールです。普段GUIのアプリでGit操作をしている方も今回紹介したコマンドを覚えておくことで、GUIツールでうまく行かなかった際の作業がスムーズになりますね。

  • この記事を書いた人

あるせ

上場ゲーム会社の現役プログラマーで1児の父です。 プログラミングを始めたい方向けのライトな記事からゲーム開発の現場で得た知見まで幅広く発信します!

PickUp

1

第1位: SourceTree SourceTreeは、無料で使える高機能なGitクライアントです。直感的なUIで操作がしやすく、初めてGitを使う人にもぴったり!ブランチの管理やマージが簡単にできる ...

-エンジニア
-,