【Git】インストール方法と使い方!リポジトリの違いと作成方法!
この記事からわかること
- Gitをインストールする方法
- Gitの使い方
- GitHubでリポジトリを作成する方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
Webアプリを自作して公開しようとした際に使わない理由がないほど便利なGit。自分の備忘録のために概要とインストール方法や使い方などをまとめていきたいと思います。
Gitとは?
Gitとはコマンドライン上(CUI)で扱える分散型バージョン管理システムの1つです。ファイルの編集履歴を保存しておくことで簡単に編集前の状態に戻せたり、更新した箇所を特定したりとアプリケーションを運営していく上で役立つ機能を持っています。
複数人で開発する時にはファイルを共有できたり、お互いの変更点や更新日時、コメントなどを残せることでより円滑に開発を行えるようになるのもメリットの1つです。
保存できるのはファイルなのでテキストデータや画像ファイル、Excelファイルなど色々な職業で役立つ便利なシステムです。
Gitのメリット
- 編集履歴を保存できる
- 簡単にバージョンを戻すことができる
- 複数人で開発時にファイルを共有できる
- 更新日時やコメントなどを残せる
- ファイル形式であれば記録できる
操作するのはコマンドライン(ターミナルやコマンドプロンプト)です。コマンドを入力することでGitを操作していきます。
Gitを使用する流れ
Gitを使ってバージョン管理をしていくためにまずは大まかな流れと構造を理解しておきます。
Gitを使う流れ
- Gitのインストールとユーザー設定
- ローカルリポジトリを初期化&Gitの管理下に置く
- ステージング
- コミット
- リモートリポジトリに作成(共有スペースを作成)
- リモートリポジトリに追加(共有スペースに追加)
大まかな流れは以上の通りです。用語は後で説明するとしてGitとしてはざっくり6手順で変更履歴やファイルの共有までが完了します。
リポジトリとは
リポジトリとは日本語で「貯蔵庫」という意味の英単語です。Gitで言うリポジトリはソースコードを記述したファイルを格納する場所のことを指しています。リポジトリはさらに2種類に分かれます。
- リモートリポジトリ:ネットワーク上にある共有のリポジトリ
- ローカルリポジトリ:自分のコンピューターで作成•コピーしたリポジトリ
誰かと共有で開発をするならリモートリポジトリの作成は必須ですが、一人での個人開発であればローカルリポジトリのみでも問題なく利用できます。
またリモートリポジトリにファイルを共有するためにはまずローカルリポジトリに登録してからリモートに登録をする2段階のステップを踏まないといけません。
上記の流れで言うところの「2.ローカルリポジトリを初期化&Gitの管理下に置く」がローカルリポジトリを作成している部分です。
1.Gitのインストールとユーザー設定
まずがGitを使えるように未導入であればインストール、その後設定をしていきます。インストールするには以下の「バージョンを確認するコマンド--version
」を入力します。
$ git --version
バージョンが返って来ればインストールは済んでいます。未導入であればポップアップが表示されるので「インストール」をクリックすればOKです。
git version 2.30.1 (Apple Git-130)
続いてGitのユーザー設定をします。日本語部分の場所を自分のものに置き換えながらコマンドを実行するだけです。
Gitのユーザー名設定
$ git config --global user.name "ユーザー名"
Gitのメールアドレス名設定
$ git config --global user.email "メールアドレス"
ユーザー設定内容を確認
$ git config --global --list
--global
オプションで設定した情報は~/.gitconfig
の中に保存されます。
2.ローカルリポジトリを初期化&Gitの管理下に置く
続いて共有(バージョン管理)したいファイルを作成しておきます。既に作成している場合は飛ばしてください。
// ディレクトリを作成する
$ mkdir app
// ディレクトリに移動する
$ cd app
該当のディレクトリに移動したらgit init
コマンドを入力しローカルリポジトリを初期化(initialize)します。このコマンドを入力すると該当ディレクトリの中に隠しファイルである「.git」ファイルが作成されます。
ローカルリポジトリを初期化(initialize)
$ git init
初期化するコマンドを入力することでこのディレクトリがGitの管理下になります。管理下になったディレクトリ(ファイル?)のことをワークツリー(ワーキングツリー)と言います。ワークツリーにある状態のままファイルを変更、更新することでその変更履歴が監視されていきます。
ワークツリーとステージング、インデックスの違い
ここで「ワークツリー」という言葉が出てきました。「ローカルリポジトリじゃないのかよ」と思ったのですが、さらに「インデックス」という言葉もここでは絡んできます。自分なりにまとめてみました。
ローカルリポジトリは大枠部分(ディレクトリ)で、その中のファイルたちにそれぞれステータスが振られるイメージ。最初は編集中を示す「ワークツリー状態」、それを「3.ステージング」することで状態が「インデックス」に変更になる。
そして状態が「インデックス」のものだけリモートリポジトリにアップロードできる。
つまりステージングは「リモートリポジトリに追加するものを登録する(状態をインデックスに変更する)」ということですかね?
3.ステージング
これでGitを使う準備ができたので実際にファイルを操作してみます。
Gitは空のディレクトリは管理対象外なので、管理対象にしたい場合は何かしらのファイルを入れる必要があります。まずはディレクトリ内に適当なファイルを作成します。
$ touch index.html
このファイル(現在はワークツリー)をステージング(インデックスに変更)します。ステージングするコマンドはgit add ファイル名
です。
ステージング
$ git add index.html
ステージングはファイル単位で行い、1つずつインデックスへ移していくと分かりやすいです。複数のファイルを一括で操作したい場合はワイルドカード(*)を使うことも可能です。
複数のphpファイルを一括ステージング
$ git add '*.php'
管理下の全てのファイルを一括ステージング
$ git add -u
4.コミット
コミットとはリポジトリにファイルの変更や追加の履歴を保存することを指します。コミットを識別するための識別子としてハッシュ
が振られます。この値はSHA-1ハッシュ関数を使用して生成され、Git上では生成されたハッシュ値の先頭7桁が表示されます。
ファイルをコミットするには以下のコマンドを叩きます。
$ git commit -m “コメント”
コミットする際はコメントを残すのが定石です。ファイルに対して行った操作(作成や変更、削除など)と箇所を記述しておくと後から参照した時にわかりやすくなります。
$ git commit -m 'Create index.html'
これでローカルリポジトリに今回の変更履歴が登録されました。ここまでを都度繰り返していけば変更履歴がどんどん増えていき、簡単に変更点を確認することができます。そしてここからは共同開発で使えるリモートリポジトリをみていきます。
4.リモートリポジトリの作成(GitHub)
リモートリポジトリを作成するにはGitHubが必要になってきます。まずは「 GitHub」にログインしましょう。
ログインしたら右上の「+」の中の「New repository」をクリックします。
「Repository name」に名前と「desc」に説明、必要であれば下のオプションを追加しておき、一番下の「Create repository」をクリックします。
するとURLが表示されます。このURLがリモートリポジトリにアクセスできるURLになるのでコピーしておきます。
これで新しいリモートリポジトリの作成は完了です。
リモートリポジトリに追加(push)
作成が完了したのでローカルリポジトリにあるファイルをリモートに追加(プッシュ)していきます。
まずはリモートリポジトリを紐づけます。origin
はデフォルト設定されているリモートリポジトリの名称です。以下のコマンドはorigin(デフォルト設定されている名称)に対してアクティブにしたいリモートリポジトリを紐づけているイメージです。
$ git remote add origin リモートURL
続いてpushコマンド
を実行することでステージングしたファイルたちがリモートリポジトリにpushされます。第一引数にはorigin(リモートの名称)を第二引数にはブランチ名を指定します。
$ git push origin master
$ git push リモート名称 ブランチ名
ブランチ名はデフォルトで「master」となっているので気にせず実行すればOKです。ブランチとは「枝わかれ」という意味の英単語です。Gitでは枝分かれしていくコミット履歴のことを指します。
例えば最初に作られる「master」は「新規機能追加」専用のコミット履歴、新規作成した「ブランチB」は「エラー修正」専用のコミット履歴といったように目的によってブランチを分けて管理することで、保存されている履歴がスッキリして作業しやすくなります。
これでpushが完了しているはずなのでGitHubのリモートリポジトリ内に該当のファイルが作成されていれば成功です。
反対にリモートリポジトリのファイルをダウンロード(pull)する場合は以下のコマンドを入力することでローカルリポジトリ内(ディレクトリ内)にファイルをコピーすることができます。引数はリモート名称とブランチ名を指定してあげればOKです。
$ git pull origin master
ここからはさらに使えるコマンドやテクニックをまとめていきます。
ステージングの有無を確認
ディレクトリ(ワークツリー)内でステージングしたものとしていないものを見分けるにはgit status
で確認可能です。
ステージングの有無を確認
$ git status 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 On branch master
// ステージング済みのファイル
Changes to be committed: (use "git restore --staged <file>..." to unstage) modified:
index.html
// まだステージングしていないファイル
Untracked files: (use "git add <file>..." to include in what will be committed)
index.html
ステージング済みのファイルは上側に緑色
、していないファイルは下側に赤色
で表示されます。
git status
ではステージングの有無以外にファイル変更の有無を確認できます。ステージングした後にファイルを編集(index.htmlを変更)した場合再度git status
すると緑色
で表示されていたファイルは上側のまま赤色
になります。
他にも使えるコマンドまとめ
全部ステージングに追加する
$ git add --all
コミットした履歴を見る
$ git log
// 変更した内容まで見る
$ git log -p
qキーで閉じる
変更した差分を見る
$ git diff
変更したコードを緑色
で表示(削除は赤色
、追記は緑色
)
ブランチを作成する
$ git branch branchname
現在のブランチを見る。アクティブになっているブランチには*がつく。
$ git branch
* master
ブランチを切り替える
$ git checkout branchname
スタッシュする
$ git stash save "説明"
スタッシュを戻す
$ git stash apply
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。