Gitの概要と初期設定をする

Gitを始めようと思います。
が、まず何から始めたら良いかわからなかったので、とりあえずMacで初期設定をしてみます。

簡単にGitの概要を整理して、Gitの初期設定ができるまでを今回のゴールをします。

はじめに

  • 本手順は、Mac環境で実施しています
  • クライアントツールはインストールせず、コマンドでGitを実行します

事前準備

  • Gitがインストールされていること
  • GitHubのアカウントが作成されていること

Gitがインストールされていることを確認する

MacではGitは標準でインストールされています。

ですが、念のため、Gitがインストールされていることを確認します。

$ git version
git version 2.21.1 (Apple Git-122.3)

バージョン2.21.1がインストールされていました。

GitHubアカウントを作成する

今回はまだ使いませんが、今後必要になると思うのでアカウントを作っておきます。

ここからGitHubアカウントを作成します。

GitHub

GitHubまでの道のり

最終ゴールであるGitHubまでは、以下の流れになると思います。

ゴールが見えていると、頑張れると思うので。。

[plantuml]
node “local" {
[worktree] -> [stage]
[stage] -> [localrepository]
}
cloud {
[GitHub]
}
[localrepository] -> [GitHub] : push
[/plantuml]

ローカルについて

ローカルについて、もう少し掘り下げてみます。

なんとなくここらへんのGitの概念が、初心者には難しいのかと思っていたので調べてみました。

先ほどの図で出てきた

  • ワークツリー
  • ステージ
  • ローカルリポジトリ

について簡単に整理します。

処理フローについて

下図は、ローカルでファイルを編集して、ローカルリポジトリにコミットするまでの流れになります。

コミットとは、スナップショットを記録することです。

[plantuml]
[stage] <-- [worktree]:git add [localrepository] <-- [stage]:git commit [/plantuml]

  • ワークツリー
    • ここでファイルを変更する
    • 変更したファイルをコミット対象として、ステージに追加する(git add)
  • ステージ
    • コミットする変更を管理する
  • ローカルリポジトリ
    • スナップショットを記録する

データの持ち方について

変更ファイル追加の場合

sample.txtをadd,commitするときのデータの流れを描いてみました。

git addを赤線、git commitを青線にしています。

[plantuml]
@startuml
node “repository" {
[commit1]
package “tree1" {
[ sample.txt file1]
}
[file1]
}
node “stage" {
node “add" {
}
package “index" {
[sample.txt file1]
}
}
node “worktree" {
[sample.txt]
}

tree1 <-le- commit1 #0000FF add <-do- [sample.txt] file1 <-do- add index <-do- file1 tree1 <-do- index #0000FF @enduml [/plantuml]

  • git add
    • ワークツリーの変更ファイル(sample.txt)をステージに追加
    • 変更ファイルを圧縮ファイルをリポジトリに作成(圧縮ファイル1)
    • 作成した圧縮ファイルと、ワークツリーの変更ファイルを紐づけるインデックスを、ステージに作成
  • git commit
    • ステージのインデックスをもとに、リポジトリにツリーを作成(ツリー1)
    • リポジトリにコミットファイルを作成(コミット1)

追加済みファイル変更の場合

上図からsample.txtを変更して、add,commitするときのデータの流れを描いてみました。

[plantuml]
@startuml
node “repository" {
[commit2]
package “tree2" {
[ sample.txt file2]
}
[file2]
}
node “stage" {
node “add" {
}
package “index" {
[sample.txt file2]
}
}
node “worktree" {
[sample.txt]
}

tree2 <-le- commit2 #0000FF add <-do- [sample.txt] file2 <-do- add index <-do- file2 tree2 <-do- index #0000FF note left of commit2 親コミットにコミット1を指定して、 前回バージョンとの紐付けをしている end note @enduml [/plantuml] 基本的に流れは同じでした。 圧縮ファイルを再度作成してリポジトリにおく、ステージのインデックスを更新する、リポジトリのツリーを作成する、といった感じです。 コメントとして描いていますが、コミット2では前回バージョンが分かるように親コミットにコミット1を指定しています。これで、前回バージョンとの差分が比較できるようになるんですね。 概要がなんとなくわかってきたところで、まずはGitの初期設定をしておきます。

初期設定をする

事前に登録していたGitHubユーザを、Gitの設定ファイルに登録します。

設定ファイルに登録するのは、ユーザ名と登録したメールアドレスです。

git configコマンドで設定します。

ユーザ名: papa
メールアドレス: papa@worker1188.com

ユーザ名、メールアドレスが上の内容であれば、以下のようにコマンドを実行します。

$ git config --global user.name "papa"
$ git config --global user.email "papa@worker1188.com"

設定が完了したら、設定ファイルをcatして、設定できているか確認します。

$ cat ~/.gitconfig
[user]
    name = papa
    email = papa@worker1188.com

ユーザ名とメールアドレスが更新されていることが確認できました。

これで、Gitの初期設定は完了です。

ITGit

Posted by まるパパ