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までは、以下の流れになると思います。
ゴールが見えていると、頑張れると思うので。。
[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の初期設定は完了です。