はじめに
実務でGitHubを使った開発業務に携わる機会がありそうなので、改めて基本的な知識をおさらいしたいと思い学習しました。
ここでは実務でGitHubを使う機会がある方が最低限使うであろう内容をまとめています。
また、具体的なLinuxコマンドの説明等は省略していますので、ご了承ください。
今回やりたいこと
・Git/GitHubのセットアップ
・基本的なGitコマンドの理解
・ローカルリポジトリへのコミット方法
環境
・Mac OS Sequoia(15.7.7)
・Git(2.39.5)
実装
1. 前準備
GitHubとは
GitHubは、Gitで管理しているソースコードやドキュメントをクラウド上で共有・管理するサービスです。
Gitによって管理された変更履歴をチームで共有できるため、コードレビューや共同開発を効率的に行えます。
GitのインストールとGitHubへの登録
・まずはGitが使えるように、下記サイトにてインストール。
・ターミナルにて下記コマンドを実施。(バージョンが表示されていれば、Gitの準備OK)
$ git --version
git version 2.39.5 (Apple Git-154)
・最後にGitHubアカウントを作成するため、下記サイトを参照。
ローカルリポジトリの作成
まずは、簡単な用語説明から。
開発者はローカルリポジトリ上でファイルの作成や変更を行い、その変更履歴をGitで管理します。
ローカルリポジトリとは、ローカル環境に存在するGitリポジトリのことです。作業ディレクトリやステージングエリア、コミット履歴などを含みます。
今回はローカルリポジトリを作成し、後続の手順でGitHubへ公開できるよう準備します。
・作業用ディレクトリとファイルの作成
$ mkdir study_git
$ touch ~/study_git/test.txt
$ ls -la ~/study_git/test.txt
-rw-r--r-- 1 tsuburayatakumi staff 0 6 5 12:58 /Users/tsuburayatakumi/study_git/test.txt
・作業用ディレクトリに移動し、Gitリポジトリの作成。
git init を実行することで、現在のディレクトリをGit管理対象として初期化できます。
# 下記のようリポジトリが作成されていること。
$ git init
Initialized empty Git repository in /Users/tsuburayatakumi/study_git/.git/
ローカルリポジトリの初期設定
最後にユーザやメアドを登録し、GitHub上で誰が何を変更したかわかるようにするためです。(ユーザ名とメアドは必ずしもGitHubで登録したものと同じでなくても結構です)
公式によると、コミットした時にこれらの情報が埋め込まれるとのこと。
Gitをインストールしたときに最初にすべきことは、ユーザー名とEmailアドレスを設定することです。 全てのGitのコミットはこの情報を用いるため、これは重要で、作成するコミットに永続的に焼き付けられます
・ユーザ名とメアドの登録
$ git config --global user.name "<ユーザ名>"
$ git config --global user.email <メールアドレス>
# 下記のように、登録したユーザ名とメールアドレスが表示されること。
$ git config --list
credential.helper=osxkeychain
init.defaultbranch=main
user.name=<ユーザ名>
user.email=<メールアドレス>
...
<以下省略>
2. ローカルリポジトリへコミットしてみる
実際に作業用のファイルを編集して、ローカルリポジトリへコミットと差分の確認していきます。
まず、結論下記のコマンドを実施することでコミットができます。
$ git add . (git add -AでもOK)
$ git commit -m <コミットメッセージ>
具体的に何をやっているのかを見ていきます。
上記のように、編集した作業ファイルを「git add」することで、ステージングエリアに移行します。コミット対象となる変更を一時的に保持する場所のことで、いわば仮置き場みたいなものでインデックスなんて呼ばれたりします。まだこの状態では、ローカルリポジトリにコミットされていません。
最後に「git commit」することでローカルリポジトリにコミットできます。コミットすることで、ローカルリポジトリに変更履歴が記録されます。一般的に、コミットの際にメッセージをつけることでどんな編集を加えたのか記載します。
実際にやってみた。
・ファイルの編集とコミットを実施
git statusで、コミットされていない変更を確認できます
$ echo "first commit" >> test.txt
$ git add .
$ git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.txt
$ git commit -m "add first commit"
[main (root-commit) 00b8f18] add first commit
1 file changed, 1 insertion(+)
create mode 100644 test.txt
コミットして初めてローカルリポジトリに変更履歴が保存されます。
そのため、git addしただけでは履歴として記録されていませんので注意が必要です。
(補足) コミットメッセージ操作系のトラブルシューティング
例) "add first commit" を "this is a first commit"に修正
# コミット履歴の確認
$ git log
commit 40562a0daf819a17f174228bf246a41b74d42aa5 (HEAD -> main)
Author: tsumuraya_takumi <XXXXXXXX@XXXXX>
Date: Fri Jun 5 16:23:01 2026 +0900
add first commit
$ git commit --amend
[main 0935915] this is a first commit
Date: Fri Jun 5 16:23:01 2026 +0900
1 file changed, 1 insertion(+)
create mode 100644 test.txt
(エディターが起動し、メッセージを編集)
$ git log
commit 0935915fba0c959fbefaf43bca274cce961e58a5 (HEAD -> main)
Author: tsumuraya_takumi <XXXXXXXX@XXXXX>
Date: Fri Jun 5 16:23:01 2026 +0900
this is a first commit
もしくは
$ git commit --amend -m "this is a first commit"
test.txt がすでにコミットしている状態で、ファイルを削除
$ rm test.txt
# test.txtファイルが存在しないこと
$ ls -la
ファイルの復元ができ、実際にtest.txtが存在していること
$ git restore test.txt
$ ls -la
test.txt
つまずいたポイント
git secret呼び出しエラー
コミットした時に下記のようなメッセージが出た。
$ git commit -m "add first commit"
git: 'secrets' is not a git command. See 'git --help'.
調査によるとGitが内部で git secrets を呼び出そうとして失敗している可能性があるとのこと。
AWS Access Keyなどの秘密情報を誤ってコミットしないための仕組みのようです。
トラブルシューティング
$ git secrets --version
git: 'secrets' is not a git command. See 'git --help'.
git-secrets の設定だけが残っており、本体がインストールされていない状態を確認。
git commit 時にGitが git secrets を呼ぼうとしている可能性あり。
一旦、そのフック部分を削除するかgit-secretsを再度インストールを検討したが、今回はGit学習のためフックの部分を削除します。
・該当のフック部分を特定
$ ls -la .git/hooks
total 24
drwxr-xr-x 5 tsuburayatakumi staff 160 6 5 13:02 .
drwxr-xr-x 8 tsuburayatakumi staff 256 6 5 15:03 ..
-rwxr-xr-x 1 tsuburayatakumi staff 58 6 5 13:02 commit-msg
-rwxr-xr-x 1 tsuburayatakumi staff 58 6 5 13:02 pre-commit
-rwxr-xr-x 1 tsuburayatakumi staff 66 6 5 13:02 prepare-commit-msg
・該当フックの中身
$ cat .git/hooks/pre-commit
#!/usr/bin/env bash
git secrets --pre_commit_hook -- "$@"
$ cat .git/hooks/prepare-commit-msg
#!/usr/bin/env bash
git secrets --prepare_commit_msg_hook -- "$@"
$ cat .git/hooks/commit-msg
#!/usr/bin/env bash
git secrets --commit_msg_hook -- "$@"
・git secrets を呼んでいる可能性があるためフックを削除
$ rm .git/hooks/pre-commit
$ rm .git/hooks/prepare-commit-msg
$ rm .git/hooks/commit-msg
# 削除できていることを確認
$ ls -la .git/hooks
total 8
drwxr-xr-x 3 tsuburayatakumi staff 96 6 5 15:09 .
drwxr-xr-x 8 tsuburayatakumi staff 256 6 5 15:03 ..
エラーのまとめ
Gitには Git Hooks という仕組みがありこれは、特定のGit操作をきっかけとして自動的にスクリプトを実行する仕組みです。
下記の項目を確認したため削除を実施しました。
pre-commit → コミットが作成される前に実行される。主にコードや差分のチェックに使う。
prepare-commit-msg → コミットメッセージエディターが起動する直前、デフォルトメッセージが生成された直後に実行する。
commit-msg → コミットを実行する前に、コミットメッセージをチェックする。
今回、Git Hooksでgit-secretsを呼び出す設定が残っていたことにより、この処理が呼び出されたが、本体がインストールされていなかったことによりエラーが発生しました。
前回AWS関連の学習をした時になんか設定してしまったかもしれません。
学んだこと
- Gitはファイルの変更履歴を管理するためのツールである
- GitHubはGitで管理しているリポジトリをクラウド上で共有・管理できるサービスである
-
git addで変更内容をステージングエリアに追加し、git commitでローカルリポジトリに変更履歴を記録する - Git Hooksを使うことで、コミット前後に特定の処理を自動実行できる
-
git-secretsはAWSアクセスキーなどの機密情報の誤コミットを防ぐ目的で利用できる
今後の改善点
- 次回はGitHub上にリモートリポジトリを作成し、
git pushでローカルリポジトリの内容を反映する - ブランチを作成し、変更内容を分けて管理する方法を学ぶ
- Pull Requestを使ったレビューの流れを確認する
まとめ
今回は、Git/GitHubの基本として、Gitのインストール、初期設定、ローカルリポジトリの作成、コミットまでを確認しました。
また、コミット時に git: 'secrets' is not a git command というエラーが発生しましたが、Git Hooksでgit-secretsを呼び出す設定が残っていたことが原因でした。
今回の学習を通して、Gitは単にファイルを保存するツールではなく、変更履歴を管理し、チーム開発を支えるための重要な仕組みであることを理解できました。
