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]
@startuml
node “Local" {
[WorkTree] -> [Stage]
[Stage] -> [LocalRepository]
}
cloud {
[GitHub]
}
[LocalRepository] -> [GitHub] : GitHubへプッシュ
@enduml
[/plantuml]

ローカルについて

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

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

先ほどの図で出てきた

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

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

処理フローについて

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

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

[plantuml]
@startuml
[Stage] <– [WorkTree]:git add
[LocalRepository] <– [Stage]:git commit

note left of WorkTree
ファイルを変更する作業場

end note

note left of Stage
コミットする変更を準備
end note

note left of LocalRepository
スナップショットを記録

end note
@enduml
[/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)をステージに追加
    • 変更ファイルを圧縮ファイルをリポジトリに作成(File1)
    • 作成した圧縮ファイルと、ワークツリーの変更ファイルを紐づけるインデックスを、ステージに作成
  • git commit
    • ステージのインデックスをもとに、リポジトリにツリーを作成(Tree1)
    • リポジトリにコミットファイルを作成(Commit1)

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

上図から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
親コミットにCommit1を指定して、
前回バージョンとの紐付けをしている
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 まるパパ