開発効率を高めるGitコマンドリファレンス
(トップページはこちら) - (Gitで始める効率的な開発ワークフロー)
開発ワークフローにおいて、Gitコマンドは時間を節約する重要なツールです。このリファレンスでは、コード変更、ブランチ管理、履歴確認といった日常的なタスクで頻繁に使用されるコマンドを、正確な構文と実践的な例とともに紹介します。
1. ファイル操作の基本
1.1 git add
ファイルをステージングエリアに追加します。
git add <file_path>
カレントディレクトリから再帰的に変更をステージングする場合は git add . を、リポジトリ全体の変更をステージングする場合は git add --all を使用します。
1.2 git commit
ステージングされた変更をリポジトリにコミットします。
git commit -m "<commit_message>"
コミットメッセージに空行を含めると、最初の行がコミットサブジェクト、残りがコミット本文になります。サブジェクトで変更を簡潔に要約し、本文で詳細を提供します。
1.3 git commit --amend
直前のコミットを修正します。
git commit --amend
2. ブランチ管理
2.1 git checkout
特定のブランチに切り替えます。
git checkout <branch_name>
新しいブランチを作成して切り替える場合は、git checkout -b <branch_name> を使用します。
2.2 git merge
あるブランチの変更を別のブランチに統合します。
git checkout target_branch
git merge feature_branch
この例では、feature_branch の変更を target_branch に適用します。
2.3 git rebase
ブランチのコミット履歴を書き換えます。
git rebase <branch_name>
マージコンフリクトの解決にも使用でき、ほとんどの場合、デフォルトブランチに対してリベースを行います。
3. リポジトリの同期
3.1 git clone
既存のGitリポジトリをコピーします。
git clone <repository>
3.2 git pull
最後にクローンまたはプルした後に他のユーザーが行ったすべての変更を取得します。
git pull <optional_remote> <branch_name>
3.3 git push
リモート参照を更新します。
git push
3.4 git remote add
GitLabのどのリモートリポジトリがローカルディレクトリにリンクされているかをGitに伝えます。
git remote add <remote_name> <repository_url>
リポジトリをクローンすると、デフォルトでソースリポジトリは origin というリモート名に関連付けられます。
4. 変更の確認と比較
4.1 git status
作業ディレクトリとステージングされたファイルの状態を表示します。
git status
ファイルを追加、変更、削除すると、Gitは変更を表示できます。
4.2 git diff
ローカルのステージングされていない変更と、クローンまたはプルした最新バージョンとの差分を表示します。
git diff
特定のブランチと比較する場合は、次のコマンドを実行します。
git diff <branch>
出力では、追加された行はプラス記号(+)で始まり緑色で表示され、削除または変更された行はマイナス記号(-)で始まり赤色で表示されます。
4.3 git log
コミットのリストを時系列順に表示します。
git log
4.4 git show
Gitのオブジェクトに関する情報を表示します。例えば、HEAD が指しているコミットを確認する場合は次のようにします。
$ git show HEAD
commit ab123c (HEAD -> main, origin/main, origin/HEAD)
5. コード分析とデバッグ
5.1 git blame
ファイルのどの部分をどのユーザーが変更したかを報告します。
git blame <file_name>
特定の行範囲を確認する場合は、git blame -L <line_start>, <line_end> を使用します。
例: example.txt の5行目を最後に変更したユーザーを確認する場合
$ git blame -L 5, 5 example.txt
123abc (Zhang Wei 2021-07-04 12:23:04 +0000 5)
5.2 git bisect
バイナリサーチを使用してバグを導入したコミットを見つけます。
まず、「bad」(バグを含む)コミットと「good」(バグを含まない)コミットを特定します。
git bisect start
git bisect bad # 現在のバージョンはbad
git bisect good v2.6.13-rc2 # v2.6.13-rc2はgoodであることがわかっている
git bisect は2つのポイント間のコミットを選択し、そのコミットが「good」か「bad」かを git bisect good または git bisect bad で識別するよう求めます。コミットが見つかるまでこのプロセスを繰り返します。
6. 変更の取り消し
6.1 git reset
コミットを取り消し、コミット履歴を巻き戻して、以前のコミットから続行します。
git reset
6.2 git reflog
Git参照ログへの変更のリストを表示します。
git reflog
デフォルトでは、git reflog は HEAD への変更のリストを表示します。
7. リポジトリの初期化
7.1 git init
Gitがリポジトリとして追跡できるようにディレクトリを初期化します。
git init
設定ファイルとログファイルを含む .git ファイルがディレクトリに追加されます。.git ファイルを直接編集しないでください。
デフォルトブランチは main に設定されます。デフォルトブランチの名前を変更する場合は git branch -m <branch_name> を使用するか、git init -b <branch_name> で初期化します。
まとめ
これらのGitコマンドは、日々の開発ワークフローを効率化するための実用的なツールです。各コマンドの正確な構文と使用例を理解することで、コード管理、ブランチ操作、履歴追跡、問題のデバッグといったタスクをスムーズに実行できます。必要に応じて各コマンドの詳細なドキュメントを参照し、チームの開発プロセスに最適な使い方を見つけてください。