超初心者エンジニアが解説するGitの使い方基礎の基礎

# 動機
- Gitというものがあることは知っていて、GitHubも登録だけしていた
- が、Gitの使い方どころか存在意義すら分からなくて詰んでいた
- 昨日2年越しにGitと和解
- 終戦記念として記録を残そう！

# 目的
- Git, GitHubとは何か、その存在意義を知る
- Gitの超基本的な使い方を知る
- 自分が勉強してわかりづらかったところをかみ砕いて書く
- 初心者ならではの観点からわかりやすく説明できたらいいな

# 環境
- Windows10

# 1. Gitとは
- **バージョン管理システム**です
 - いつ誰がどこの箇所を変えたか管理できる
 - 複数人で1つのコードをいじるときに便利
 
- **[GitHub](https://github.co.jp/)**：Gitで管理したコードを保存するWebサービス
 - アカウントを作る必要があります(無料)
 - 複数人でコードを共有することができます
 - 自分の作ったコードを世界中の人に公開することもできます

# 2. Gitの使い方概要
- **ローカルリポジトリ**と**中央リポジトリ**を同期させます!
![スクリーンショット (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628704/08cd3938-0e36-adcc-4e64-26ccc8b75d5a.png)


 - **リポジトリ**：：Gitの変更箇所が記録されているもの
 - **ローカルリポジトリ**：個人のコンピュータ上にあるリポジトリ
 - **中央リポジトリ**：GitHub上にあって、みんなでいじるリポジトリ

# 3. 準備
### 3-1. 前準備
- ①[GitHub](https://github.co.jp/)でアカウント作成
- ②自分のコンピュータにGitをインストール(やり方は[こちら](https://www.git-scm.com/book/ja/v2/使い始める-Gitのインストール))
 - コマンドプロンプトに「**git**」と入力して正常に動作したらインストール完了！

### 3-2. 中央リポジトリ作成
- ①GitHubにログイン
- ②右上の＋を押して、「**New repogitory**」選択
 - 名前を付ける
 - Public選択
 - 「Initialize this repository with a README」にチェック

### 3-3. リポジトリを自分のコンピュータにダウンロード
- ①右上アイコン→Your Profile→さっき作ったリポジトリを選択
- ②緑色のボタン「**Clone or Download**」選択→表示されたリポジトリのURLをコピー
- ③コマンドプロンプトで以下を実行

```
git clone リポジトリのURL
```

- ④コマンドプロンプトで「**dir**」と入力してリポジトリの名前が付いたディレクトリを発見したら成功！

# 4. プッシュとプル
- ローカルリポジトリと中央リポジトリを同期する方法です
 - **プッシュ**：ローカルリポジトリの内容を中央リポジトリの内容に同期
 - **プル**：中央リポジトリの内容をローカルリポジトリに同期
 ![スクリーンショット (37).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628704/6e641211-1c24-2222-cecb-9fce792e91f7.png)
- 準備として、テキトーなファイルをダウンロードされたディレクトリの中に保存してください
 - 今回はsample.pyというファイルにします

```python:sample.py
print("Hello World!")
```

- ディレクトリに移動

```
cd ディレクトリ名
```

- プッシュ・プル先のURLを確認

```
git remote -v
```

- リポジトリ名.gitが表示されたらok！

### 4-1. プッシュ
##### ①ファイルをステージ状態にする
- **ステージ状態**にする=中央リポジトリにプッシュしたいファイルをGitに教える
- ファイルの状態を確認
 - ステージ状態にないファイル：赤色で表示
 
```
git status
```

- ステージ状態にするために以下を実行

```
git add sample.py
```

- もう一度「**git status**」コマンドを実行するとsample.pyが緑色で表示されていると思います

##### ②ファイルをコミットする
- **コミット**：ステージ状態にあるファイルの変更点の記録を**ローカルリポジトリ**に保存すること
- 以下を実行します

```
git commit -m "コミットの説明"
```

- コミットの説明には変更した理由などを書く

##### ③ファイルをプッシュする
- 以下を実行

```
git push origin main
```
[2022/11/25修正]
当初git push origin **master**と書いていたのですが、2020年10月以降、git push origin **main**というコマンドでないと、「error: src refspec master does not match any」エラーが出るようになったようです。
これは、新規レポジトリ作成時に「main」ブランチがデフォルトで作成されるようになったからだそうです。([参考記事](https://blog.deepblue-ts.co.jp/git/git-push-error/))
[2022/11/25修正]

- いろいろ出てきた最後にmaster -> masterって表示されたら成功！
- GitHubのページでsample.pyが表示されているか確認しましょう

### 4-2. プル
##### ①Create new fileでテキトーな名前のファイル(例.new.py)を作る
- 3-3で出てきた緑色のClone or downloadの近くのボタンです

##### ②ファイルをローカルリポジトリにプル
- 以下を実行

```
git pull origin main
```
[2022/11/25修正]
master⇒mainに変更しました。
[2022/11/25修正]
- 自分のコンピュータのリポジトリ名ディレクトリの中にnew.pyがあれば成功！

# おわりに
- 私自身Git初心者で知識不足なのですが、ここまでわかっていれば結構応用が利くと思います
- 例えばHerokuでLINEbotを作ろうと思い、[こちら](https://qiita.com/shimajiri/items/cf7ccf69d184fdb2fb26)を参考にしました
- Gitを勉強する前はエラーが出ても何のことだかさっぱりわからず、一度は断念しました
- しかしGit勉強後に再挑戦したら、簡単にできちゃいました
- ツールを使う上で、その仕組みを理解していることは重要なんだなと改めて思い知りました
- 初心者ゆえ間違いがあるかもしれませんので、見つけた方は(やさしく)教えていただけると幸いです！

# 参考
- コーリー・アルソフ『独学プログラマー』日経BP（2018）