Git

Gitの初期設定|git init・git clone・.gitignoreの手順

Gitの作成者設定、git initとgit cloneの使い分け、.gitignore pattern、追跡済みfile、最初のcommitとremote追加を順に解説します。

この記事の目次
  1. Gitのuser.nameとuser.emailは何の設定か
  2. 新しいrepositoryをgit initで作る手順
  3. 既存projectはgit cloneから始める
  4. .gitignoreは何を除外するfileか
  5. .gitignore patternはどう読むか
  6. すでに追跡済みのfileはどうするか
  7. 最初のcommitを作る安全な手順
  8. remoteを追加するときの確認項目
  9. 初期化後のチェックリスト

新しいprojectをGit管理するなら、対象directoryでgit init -b mainを実行し、最初のgit addより前に.gitignoreを用意します。既存remote projectへ参加する場合はgit initではなくgit cloneを使います。

この記事では、commit作成者の設定、repository初期化、除外file、最初のcommitまでを順に進めます。日常commandはGitの基本コマンド、GitHubとの役割の違いはGitHubとは何かを参照してください。

Gitのuser.nameとuser.emailは何の設定か

user.nameuser.emailはcommitへ記録する作成者情報です。GitHubへのloginやremote accessを自動設定するものではありません。

git config --global user.name "Your Name"
git config --global user.email "you@example.test"

git config --global --get user.name
git config --global --get user.email

--globalは利用者単位のdefaultです。仕事用と個人用などrepositoryごとに変える場合は、対象repository内で--local設定を使い、git config --show-origin --get user.emailでどの設定fileから読まれたか確認します。

スポンサーリンク

新しいrepositoryをgit initで作る手順

既存のlocal directoryを新しく履歴管理するときだけgit initを使います。実行場所を間違えると想定外の広いdirectoryを管理対象にするため、先に現在地とfile一覧を確認します。

  1. project rootへ移動する。
  2. 現在pathとfileを確認する。
  3. git init -b mainでrepositoryを作る。
  4. .gitignoreを作る。
  5. git statusで対象を確認する。
  6. 必要なfileだけstageし、最初のcommitを作る。
cd path/to/project
pwd
git init -b main
git status

-b mainで初期branch名を指定できます。組織に別の命名規則がある場合はその契約を優先します。

既存projectはgit cloneから始める

GitHubなどに既存repositoryがある場合は、空のdirectoryでgit initして手動接続するよりgit cloneを使います。履歴、remote設定、default branchの情報をまとめて取得できます。

git clone https://github.com/example/project.git
cd project
git remote -v
git status

private repositoryでは認証方法が別に必要です。user.nameuser.emailを設定してもcloneやpushの認証は完了しません。HTTPS credential、SSH key、organization policyなど、利用先の案内に従います。

.gitignoreは何を除外するfileか

.gitignoreは、まだ追跡していないfileを通常のgit statusgit addの対象から除外するpattern集です。生成物、dependency、local設定、cacheなど、repositoryで共有しないものを記載します。git initの直後、最初のgit addより前にproject rootへ置くのが基本です。

.gitignore自体はcommitしてteamで共有します。自分の環境だけで除外したいfile(editor設定や個人用scriptなど)は、.gitignoreではなく.git/info/excludeへ同じpatternで書きます。このfileはcommitされないため、他のmemberへ影響しません。利用者単位の共通除外はgit config --global core.excludesFile ~/.gitignore_globalで指定したfileに書きます。

# dependencies
node_modules/

# build output
dist/
coverage/

# local OS/editor files
.DS_Store
*.swp

# local environment overrides
.env.local

秘密情報はignoreしただけで安全になるわけではありません。一度commitしたcredentialは履歴に残るため、漏えいした値を失効・再発行し、必要なら履歴対応を管理者と行います。sample設定には実値を入れず、必要なkey名だけを書きます。

.gitignore patternはどう読むか

pattern 意味
dist/ dist directoryを除外 build output
*.log 任意名の.log fileを除外 debug log
/temp .gitignore位置を基準にroot直下を除外 root限定の一時物
!example.env 先のpatternから例外として再包含 sample fileを共有

patternは置いた.gitignoreのdirectory位置にも影響されます。期待どおり除外されない場合は、感覚でslashを増やさずgit check-ignore -v path/to/fileで一致したpatternとfileを確認します。

すでに追跡済みのfileはどうするか

.gitignoreへ追加しても、すでにGitが追跡しているfileは自動で追跡解除されません。内容を共有し続けるべきか、local専用へ変更するかをteamで確認します。

git ls-files path/to/file
git check-ignore -v path/to/file

# fileはlocalに残し、今後の追跡対象から外す場合
git rm --cached path/to/file

git rm --cached後の削除はrepository側の変更としてcommitされます。共有fileを誤って外さないよう、変更意図と他環境への影響を確認してください。

最初のcommitを作る安全な手順

git add .をすぐ実行せず、未追跡fileとignore結果を見てから必要なfileをstageします。

git status --short
git check-ignore -v .env.local

git add .gitignore README.md package.json src/
git diff --staged
git commit -m "Initialize project"
git status

binary、database dump、大きな生成物が入っていないかも確認します。最初のcommitが小さく目的明確なら、後からprojectの出発点を読みやすくなります。

remoteを追加するときの確認項目

localで新規作成し、後から空のremote repositoryへ接続する場合は、URLとremote名を確認して追加します。

git remote add origin https://github.com/example/project.git
git remote -v
git branch --show-current

git push -u origin main

remote側にREADMEなどのcommitがすでにある場合、localと別の履歴が存在します。force pushで上書きせず、fetchして履歴と内容を確認し、統合方針を決めてください。

初期化後のチェックリスト

  • repository rootが意図したdirectoryか。
  • user.nameとuser.emailが目的のidentityか。
  • 秘密情報、dependency、build outputがstageされていないか。
  • .gitignore patternがcheck-ignore -vで一致するか。
  • 最初のcommit差分を読んだか。
  • remote URLと送信先branchが正しいか。

初期設定の目的はcommandを一度通すことではなく、共有する正本とlocalだけのfileを分けることです。除外基準が曖昧なら、先にREADMEへ生成手順と必要な設定を記録してからcommitしてください。

スポンサーリンク