どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

Git入門 part1 / Gitの基本

作った gem を Github に公開するために、Github の使い方を覚えておく必要があります😊
また、Github を使うために、まずは git の知識が必要になるようです。
ということで本日はサルでも分かるGit入門をやっていきます!
遠回りですみません😭😭

目次

1.入門編

1-1. Gitの基本

Git は、分散型バージョン管理システムのひとつです。
例えば社内サーバにおいて、Aさんがデータをサーバに保存し、後日Bさんが更新をして、更にCさんとDさんがそれぞれ編集して同時に更新したら、一方が消えてしまった…ということが起こりえます😖
Git では、データの状態を好きなときに更新履歴として保存して、過去の状態に戻したり、更新箇所を確認したりできるそうです!

ファイルやディレクトリの状態を保存する場所をリポジトリといいます。
状態を保存するということは、前回の保存状態との差分から、更新した内容を表示することもできます😊

リポジトリにはローカルとリモートの2つがあり、普段は個人がローカルリポジトリで作業を行い、作業が終わったら、他の人と共有するためにリモートリポジトリにファイルをアップロード(push)するということになります。
また、他の人が作成したファイルをリモートリポジトリから自分のローカルリポジトリにダウンロード(pull)することもできます。

また、ファイルやディレクトリの状態をリポジトリに記録する操作をコミットと言います。
コミットを実行すると、前回コミットした状態から現在の状態までの差分を記録したコミット(またはリビジョン)が作成されます。コミットは動詞でもあり名詞でもあるんですね〜!
また、コミットの実行時にはコミットメッセージを入力します。
Git のコミットメッセージの書き方は以下のとおりです💡

1行目 : コミットでの変更内容の要約
2行目 : 空行
3行目以降 : 変更した理由

そして、実際に作業するディレクトリをワークツリーと呼びます。
ワークツリーは Git の管理下にあり、ワークツリーとリポジトリの間にはインデックスというものがあります🔖
インデックスとは、ワークツリーで作業したファイルをリポジトリにコミットするための準備をする場所です。
コミットする時は、ワークツリーから直接リポジトリ内に状態を記録するのでなく、インデックスの設定に従って状態を記録します。
これにより、ファイル丸ごと全部をコミットしなくても部分的にコミットすることができます✨

1-2. チュートリアル1 Gitの基本

サルでも分かるGit入門チュートリアルでは、Windows, mac(GUI), コンソールから環境を選べます。わたしはコンソールで進めていきます💪
まずは Git のインストールを行います!Homebrewをインストール済みなので、以下のコマンドでインストールしました🙂

$ brew install git

念のため以下のコマンドでバージョンを確認すると、2.20.1でした👀

git -- version

f:id:mistyrinth:20181221204225p:plain

次に Git の初期設定として、ユーザ名とメールアドレスの登録を行います。
リポジトリにコミットする際、履歴などに表示されるそうです😊

$ git config --global user.name "ユーザ名"
$ git config --global user.email "メールアドレス"

合わせてチュートリアルに従い、Gitの出力をカラーリングする設定と、checkoutコマンドに対するcoというエイリアスの作成をしました!

$ git config --global color.ui auto
$ git config --global alias.co checkout

コンソールの場合、コマンドでも設定変更できますが、設定ファイルを直接編集することもできます。
ホームディレクトリにある.gitconfigを開いてみました!
f:id:mistyrinth:20181221210820p:plain
先程の設定が反映されていますね😆

続いて、新規ローカルリポジトリの作成です。
ローカルリポジトリの新規作成は、リポジトリという特別なものを作るのではなくて、mkdirディレクトリを作成して、そのディレクトリをリポジトリに指定するという流れです。
ここでは、ホームディレクトリにtutorialという名前のローカルリポジトリを作ります!

$ mkdir tutorial
$ cd tutorial
$ git init

f:id:mistyrinth:20181221212159p:plain
空のリポジトリができました✨✨

では、リポジトリにファイルを登録します。
まずは、先程作った tutorial ディレクトリの中にsample.txtというテキストファイルを作成します。
ファイルの中身のテキストは、チュートリアルに従いサルでもわかるGitコマンドにします。
わたしは vim で作りました!
f:id:mistyrinth:20181221213721p:plain
入力2のcatコマンドでは、ファイルの中身を確認しているだけです😶
入力3のstatusコマンドでは、Gitの管理下にあるディレクトリの、ワークツリーとインデックスの状態を確認しています💡

$ git status

ここでは tutorial ディレクトリのワークスペースとインデックスの状態を確認しています。
赤文字でsample.txtとなっているのは、インデックスによる履歴の追跡対象になっていないからです🙄
インデックスに登録すると、追跡対象に登録することができるので、インデックスに登録をします!

履歴の追跡対象としたいファイルをインデックスに登録するには、addコマンドを使用します。

$ git add ファイル名

ファイル名はスペース区切りで複数指定することができます🌝
今はsample.txtだけですね。
addコマンドでsample.txtを追加して、先程と同じくstatusコマンドを実行すると、以下のようになります。
f:id:mistyrinth:20181221214704p:plain
インデックスにsample.txtが追加され、リポジトリへのコミットの準備ができました🎉

リポジトリにコミットするにはcommitコマンドを使用します。

$ git commit -m コメント

コメントは"first commit"としておきます✍️
これでコミットができると、先程のstatusコマンドを実施しても変更履歴が無いはずですね〜☀️
また、変更履歴を確認できるlogコマンドも実行してみたので、一連のキャプチャを貼ります!
f:id:mistyrinth:20181221215603p:plain

面白いですね〜!!
複雑になってくるところを早く見てみたいです😆😆

2.用語のおさらい

今日は沢山専門用語が出てきたので、一覧にまとめました!

用語 意味
repository データの状態を保存する場所
作業用のローカルリポジトリと共有用のリモートリポジトリがある
Push ローカルリポジトリからリモートリポジトリにアップロードすること
Pull リモートリポジトリからローカルリポジトリにダウンロードすること
commit ファイルやディレクトリの追加・変更をリポジトリに記録する操作
worktree 実際に作業をするディレクト
index リポジトリとワークツリーの間にあり、リポジトリにコミットするための準備をするところ

今日は以上です😊