はじめに
株式会社インプルの奈良です。
Gitを用いて開発するときに、GUIクライアントに慣れすぎて、CUI(CLI)を疎かにしていませんか?
確かにGUIクライアントを利用する方が操作方法が確立されているため安定性があります。
しかし、GUIクライアントが重いときはターミナルからコマンドを叩いた方が圧倒的に早い・・・!だけではなく、エンジニアぽくてカッコいいですよね(大切)
この記事では、GUIクライアントに慣れすぎてCUI(CLI)を疎かにしている全Gitユーザーに向けてGitの基本的なコマンドと簡単な解説をまとめます。
Gitのセットアップ
git config
下記のコマンドでGitのユーザー名とメールアドレスを設定します。この設定により、gitのコミット等の操作を行えるようになります。
git config --global user.name "あなたの名前"
git config --global user.email "あなたのメールアドレス"
リポジトリの作成
git init
新しいGitリポジトリを初期化します。この作業を行うことで、新しいプロジェクトでGitを使用する準備が整います。やっていることはローカルリポジトリを作成しています。
git init
git clone
既存のリポジトリのコピーを作成します。既存のプロジェクトをローカルで作業するためにダウンロードします。リポジトリURLはGitHubやGitLabからコピーできます。
git clone [リポジトリURL]
変更のステージングとコミット
git status
どのファイルが変更されたか、またはステージングされているかを確認します。
git status
git add
変更をステージングエリアに追加します。この作業はコミットの準備段階です。
git add [ファイル名]
git add .
git commit
ステージングされた変更をリポジトリに記録します。コミットメッセージには、行った変更の説明を含めることが重要です。
git commit -m "コミットメッセージ"
リモートリポジトリとの連携
git push
ローカルのコミットをリモートリポジトリにアップロードします。
git push origin [ブランチ名]
git pull
リモートリポジトリから最新の変更を取得して、ローカルリポジトリに統合します。
git pull
ブランチの操作
git branch
新しいブランチを作成するか、利用可能なブランチのリストを表示します。
git branch [ブランチ名] # 新しいブランチを作成
git branch # ブランチのリストを表示
git branch -d [ブランチ名] # ブランチの削除
git checkout
別のブランチに切り替えるか、新しいブランチを作成して切り替えます。
git checkout [ブランチ名]
git checkout -b [新しいブランチ名]
マージとコンフリクトの解決
git merge
別のブランチの変更を現在のブランチに統合します。
git merge [ブランチ名]
コンフリクトが発生した場合は、対象のファイルを開いて手動で解決し、解決後に再度コミットを行います。
作業中の変更を一時保存する
git stash
作業中の変更を一時的に保存して作業ディレクトリをクリーンな状態に戻します。ことができます。
git stash # 現在の変更をスタッシュ
git stash pop
スタッシュされた変更を現在のワーキングディレクトリに再適用し、同時にそのスタッシュをリストから削除します(後で再び取り出して作業を再開する)。最新のスタッシュがデフォルトで適用されますが、特定のスタッシュを適用したい場合は、スタッシュの名前(例:stash@{0})を指定できます。
git stash pop # スタッシュした変更を取り出す
git stash pop stash@{0}
git stash list
現在保存されているすべてのスタッシュのリストを表示します。これにより、どのようなスタッシュが保存されているかを確認できます。
git stash list
git stash drop
指定されたスタッシュエントリをスタッシュリストから削除します。スタッシュを名前で指定しない場合、最新のスタッシュ(stash@{0})が削除されます。
git stash drop
git stash drop stash@{0}
コミット履歴の確認
git log
コミット履歴には、各コミットの詳細と共にハッシュが表示されます。以下のコマンドを実行すると、コミット履歴が表示され、そこから任意のハッシュを見つけることができます。
git log
特定のファイルのコミット履歴の確認
特定のファイルやディレクトリに関連するコミットのみを表示したい場合は、以下のようにコマンドを使用します。
git log -- [ファイルパス]
最新のコミットハッシュのみを表示
最新のコミットのハッシュのみを表示するには、以下のコマンドを実行します。
git log -1 --format="%H"
特定の条件で検索
特定の作者によるコミットや、ある期間内のコミットを検索する場合は、--author
や--since
、--until
オプションを使用します。
git log --author="ユーザー名"
git log --since="2023-01-01" --until="2023-12-31"
過去のコミットを取り消す
git revert
選択したコミットの変更を取り消す新しいコミットを作成します。これは、過去の変更を無かったことにするのではなく、その変更を打ち消すための安全な方法です。
git revert [コミットハッシュ]
特定のコミットを適用する
git cherry-pick
別のブランチの特定のコミットを現在のブランチに適用します。これにより、必要な変更のみをピックアップして適用することができます。
git cherry-pick [コミットハッシュ]
ブランチの基点変更と履歴整理
git rebase
ブランチのコミット履歴を整理するために使用されます。特に、メインブランチに対して行われた更新を現在の作業ブランチに適用したい時に便利です。
git rebase [新しいベースブランチ名]
ファイルの変更点を比較
git diff
ファイルの変更点を比較して表示するために用います。作業中の変更点やステージングされた変更、過去のコミットとの差分を確認することができます。
git diff
リモートの最新情報を取得
git fetch
リモートリポジトリから最新の情報をローカルに取得するために使用します。取得後、変更を適用するためには別途git mergeやgit rebaseの実行が必要です。
git fetch
コミットした内容を取り消す
git reset
現在のブランチのHEADを指定した状態に戻します。このコマンドによって、ステージングエリア(インデックス)やワーキングディレクトリの変更を取り消すことができます。
git reset # 最後のコミットを保持しながら、ステージングされた変更を取り消します。
git reset --soft [コミットハッシュ] # 指定したコミットまで戻りますが、ワーキングディレクトリの変更はそのまま保持します。
git reset --hard [コミットハッシュ] # 指定したコミットまで完全に戻り、ワーキングディレクトリの変更も破棄します。
リモートリポジトリを管理するための様々な操作
リモートリポジトリの一覧表示
リポジトリに設定されているすべてのリモートリポジトリを一覧表示します。
git remote
リモートリポジトリの詳細を表示
各リモートリポジトリの名前とURLを詳細に表示します。
git remote -v
新しいリモートリポジトリを追加
新しいリモートリポジトリを追加します。例えば、GitHubのリポジトリをorigin
という名前で追加する場合は、git remote add origin <GitHubのリポジトリURL>
のようになります。
git remote add <名前> <URL>
リモートリポジトリの名前を変更
既存のリモートリポジトリの名前を変更します。
git remote rename <旧名前> <新名前>
リモートリポジトリのURLを変更
指定したリモートリポジトリのURLを変更します。
git remote set-url <名前> <新しいURL>
リモートリポジトリを削除
指定したリモートリポジトリの設定を削除します。
git remote rm <名前>
さいごに
僕はGUIが好き。