[ターミナル]  git/GitHub を管理する方法

# 概要
ターミナルを利用して、git で作業ディレクトリ（ローカルディレクトリ/リモートディレクトリ）を管理する方法についてまとめる。

# ゴール
作業管理しているローカルディレクトリをリモートリポジトリ（GitHub） に紐づける

# ローカルディレクトリの管理

### git init //フォルダをバージョン管理の対象にする

```:ターミナル
git init
```
実行後、フォルダに「.git」という隠しファイルが生成される。
cf. [git 管理をやめる](https://qiita.com/b4b4r07/items/cac4abd9ae66537e2833)


### git add //記録対象の指定

```:ターミナル
//バージョン管理するアイテムが一つの場合
git add sample.txt

//バージョン管理するアイテムが複数の場合
git add . 
```
これは、以降で説明する git commit を実行するまえに毎回行う必要がある。

### git commit  // 変更点の記録

```:ターミナル
git commit -m “first commit”
```
必ず -m "更新内容" とセットで記載する。
入れ忘れると、Vim が立ち上がるので INSERTモード（iをタイプする）でコミットメッセージを入力する。ここでは、「write commit message」と入力する。
![スクリーンショット 2020-09-09 23.13.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663833/c7663340-6ae8-fa5b-09d5-5cb05079c5cd.png)
INSERT モードは [esc] キーで終了し、「:wq」で閉じる。

# リモートディレクトリ(github) の管理
### github でリポジトリを作成
[Your profile] → [Repositories] → [New] をクリック
![スクリーンショット 2020-09-10 17.05.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663833/abfe8a08-7a2d-ac7c-6c0d-0db69221e5bb.png)

[Create a new repository] ページが表示されるので、[Repository name] を入力する。ここでは、ローカルディレクトリとあわせて「hellogit」とする。
![スクリーンショット 2020-09-10 17.07.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663833/41eb18b7-3a6a-1c27-a6fe-1d0bf9b0a623.png)

設定が完了したら、[Create Repository] をクリックする
![スクリーンショット 2020-09-10 17.29.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663833/7e02ce11-98bf-d3fd-e0b1-375a9ccc9a91.png)

画面に表示された [HTTPS] か [SSH] をコピーする
※https 通信の場合 git remote add するたびに PW を聞かれる


### ローカルディレクトリを github のリモートディレクトリに紐づける

```:ターミナル
git remote add origin https://github.com/ub0t0/myfirstgithub.git
```

### commit 済みのディレクトリを github に更新

`git add`と`git commit` した後に以下のコマンドを実行

```:ターミナル
git push -u origin master
```

### html の公開
github pages を利用すると、 .html を静的ファイルとして公開することができる
![スクリーンショット 2020-09-10 17.48.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663833/c6d1d555-fae4-4893-6869-d20c768e4be2.png)

[setting] → [GitHub Pages] → [Branch:master] → [Save] で `index.html` が公開され、リンクが表示される。

https://github.com/ub0t0/hellogit
`index.html` が読み込まれるが、`index.html` 以外を開きたい場合は、/ファイル名で開くことが可能
https://github.com/ub0t0/hellogit/a.html

### github でファイルの中身を変更した場合
github 上で Read me ファイルの作成やファイルの中身を変更した場合は pull コマンドを利用して、ローカルリポジトリも更新する

```:ターミナル
git pull
```

### github にすでにあるリポジトリをローカルで管理

```:ターミナル
git clone クローン元のリポジトリ
```

# 覚えておきたい確認用コマンド
### git status //ステータスの表示 

commit する前に、git status を実行した場合

```:ターミナル
git status

// 返されたメッセージ
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
```

前回 commit した時から変更点がない場合

```:ターミナル
git status

// 返されたメッセージ
nothing to commit, working tree clean 
```
前回 commit した時から変更点がある場合
（例）「a.text」というファイルを新規で作成した場合のメッセージ

```:ターミナル
git status

// 返されたメッセージ
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")
```




### git log // ログの表示
いつだれが更新したかを確認することができる。

```:ターミナル
git log

// 返されるメッセージ
commit 一意のID
Author: 
Date:   
 　　　　commit したときの文字列
```



# 参考
[【初心者】Gitコマンドの使い方を体系的に覚える【一覧あり】](https://kitsune.blog/git-command?fbclid=IwAR21-vBBjZbZrxQ3nqbTevAMvIvmLwpL-Vu4ddmvX373KyAQknZNO4UXw9E)
[【読むだけ】 Gitとは？仕組みを初心者にもわかりやすく解説【図解】](https://kitsune.blog/git-summary?fbclid=IwAR1PMC9cDTV-OrbzKUAB7I2cQOmM7_dalEsEDBHKoppoQR_8WyGLhJex_8M)
[サル先生のGit入門](https://backlog.com/ja/git-tutorial/?fbclid=IwAR1PMC9cDTV-OrbzKUAB7I2cQOmM7_dalEsEDBHKoppoQR_8WyGLhJex_8M)
[マンガでわかるGit](https://next.rikunabi.com/journal/tag/webdesign-manga/?fbclid=IwAR1PMC9cDTV-OrbzKUAB7I2cQOmM7_dalEsEDBHKoppoQR_8WyGLhJex_8M)