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]
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の初期設定は完了です。