Git/GitHub

git config と最初のリポジトリ

7

git config と最初のリポジトリ — Git Tips

入れたばかりの Git には、誰がコミットするかがまだありません。git config で作者を登録し、git init まで進めばリポジトリとしての最初の一手です。

参考(公式)


目次

  1. リポジトリと作業ディレクトリ
  2. git config でコミットの作者情報を設定する
  3. git init で最初のリポジトリを作る
  4. ファイルを 1 つ作って commit する
  5. 隠しディレクトリ .git を覗く
  6. よくある失敗

リポジトリと作業ディレクトリ

Git の リポジトリ とは、変更履歴を記録する場所のことです。特定のフォルダで git init を実行すると、そのフォルダ配下が Git の管理対象になります。作業に使うフォルダは、Docker のコンテナを使っている場合はコンテナ内の /workspace、ホストで直接作業している場合は任意の作業フォルダで構いません。どちらでも、これから示すコマンドはまったく同じです。

# Docker コンテナ内の例cd /workspacemkdir practice-repocd practice-repo
# ホスト(PowerShell)の例mkdir practice-repocd practice-repo

以降のコマンド例はコンテナ内・ホストのどちらでも共通なので、bash の例だけを示す箇所があります。


git config でコミットの作者情報を設定する

git init の前後どちらでも構いませんが、最初に一度だけ設定しておけば、以後のすべてのリポジトリで使われます。--global はマシン(またはコンテナ)全体に対する設定という意味です。

git config --global user.name "あなたの表示名"git config --global user.email "you@example.com"

設定できたか確認するには、次のコマンドを使います。

git config --global --list

期待する出力(例)

user.name=あなたの表示名user.email=you@example.com
項目 意味
user.name commit の作者として記録される名前
user.email commit の作者として記録されるメールアドレス
--global この設定を今後のすべてのリポジトリに適用する
--local(省略時の既定) 今いるリポジトリだけに適用する設定

まだ ~/.gitconfig が無い状態--list だけを先に実行すると、次のようなエラーになることがあります。

fatal: unable to read config file '/root/.gitconfig': No such file or directory

これは異常ではなく、「まだ何も設定されていない」ことを示しています(上記は Docker コンテナ内の例。Windows ホストではパスが C:/Users/<ユーザー>/.gitconfig のようになります)。先に user.name / user.email を設定してから、もう一度 --list を実行してください。

メールアドレスは、実在するものでなくても学習目的であれば動作します。ただし GitHub と連携する予定がある場合は、GitHub に登録しているメールアドレス、または GitHub が発行する noreply アドレスを使うと、後々の運用がしやすくなります。


git init で最初のリポジトリを作る

作業フォルダの中で、次のコマンドを実行します。

git init

期待する出力(例)

Initialized empty Git repository in /workspace/practice-repo/.git/

この時点で、フォルダの中に見えない .git というディレクトリが作られています。これが Git がすべての履歴を保存する場所です。

デフォルトのブランチ名は Git のバージョンや設定によって main または master になります。統一したい場合は次のコマンドで明示できます。

git branch -M main

現在のブランチ名は次のコマンドで確認できます。

git branch --show-current

まだ 1 回も commit していない状態でも、多くの場合 main などのブランチ名が表示されます。ブランチの実体(最初の commit)が無くても、HEAD が指す参照名として読み取れるためです。


ファイルを 1 つ作って commit する

適当なファイルを 1 つ作り、それを Git に記録させてみます。

echo "# practice-repo" > README.md
"# practice-repo" | Out-File -Encoding utf8 README.md

まず状態を確認します。

git status

期待する出力(例)

On branch mainNo commits yetUntracked files:  (use "git add <file>..." to include in what will be committed)        README.mdnothing added to commit but untracked files present (use "git add" to track)

Untracked files(未追跡ファイル)と表示されるのは、Git がまだこのファイルを記録対象として認識していない状態です。git add でステージに載せ、git commit で記録します。

git add README.mdgit commit -m "Add README"

期待する出力(例)

[main (root-commit) 1a2b3c4] Add README 1 file changed, 1 insertion(+) create mode 100644 README.md

これで最初のコミットが完成しました。もう一度 git status を実行すると、次のように「記録すべき変更がない」ことが分かります。

On branch mainnothing to commit, working tree clean

隠しディレクトリ .git を覗く

.git は普通のフォルダの中にある 隠しディレクトリ で、リポジトリのすべての履歴・設定がここに保存されています。中身を直接編集する必要はありませんが、どんなものが入っているかを軽く見ておくと「Git は何をしているのか」がイメージしやすくなります。

ls -la .git
中身(一例) 役割の概要
HEAD 今どのブランチ(またはコミット)を指しているかの参照
config このリポジトリだけのローカル設定(--local の内容)
objects/ commit・ファイル内容などの実データ
refs/ ブランチやタグの参照

このフォルダを消すとどうなるか

.git を削除すると、そのフォルダは Git リポジトリとしての履歴をすべて失い、単なる通常のフォルダに戻ります。作業中のファイル自体(README.md など)は残りますが、コミット履歴は復元できません。誤って消さないよう、.git を直接編集・削除する操作は基本的に避けてください。


よくある失敗

Author identity unknown と言われて commit できない

*** Please tell me who you are.

user.name / user.email が未設定です。git config でコミットの作者情報を設定する の手順を先に行ってください。

git init したのに git statusfatal: not a git repository になる

git init を実行したフォルダと、git status を実行しているフォルダが違います。pwd(bash)や Get-Location(PowerShell)で現在の場所を確認し、リポジトリのフォルダに cd してから再実行してください。

git config --global --listfatal: unable to read config file

まだ 1 度も --global 設定をしていない状態です。エラーではなく「未設定」を示しています。先に user.nameuser.email を設定してください。

commit したのにファイルが Untracked のまま

git add を忘れて git commit した可能性があります。git statusUntracked files に表示されているファイルは、git add してから git commit してください。

Docker コンテナを再起動したら設定も履歴も消えた

setup フォルダのコンテナ環境は、/workspace~/.gitconfig を永続化しない構成です。コンテナを down して作り直すと、git configgit init からやり直しになります。これは「毎回同じ手順を練習する」という設計上の挙動です。継続して同じリポジトリを使いたい場合は、コンテナを stop だけにして削除しないようにしてください。

シェア