初心者が思う『Git』でとりあえず覚えとくコマンド3つ

#｜概要
- GitとGitHubの違い
- GitとGitHubを使った作業の流れ&3つのコマンドを使うタイミング
- それぞれのコマンドの説明
- git add
- git commit
- git push
- その他によく使うコマンド　　git status　[現在の状況を確認する]　

#｜GitとGitHubの違い

まず私自身が、ずっとGitとGitHubのことを、同じ機能で『みんなそれぞれ自由な呼び方をしているんだな〜』と勝手に思っていたので、調べて理解した範囲で違いを簡単に紹介させていただきます。


###GitHubとは…![スクリーンショット 2022-01-12 12.23.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422183/20f8980a-12a6-cde7-7fc4-ddbd7e5bb364.png)

GitHubは、Gitをより使いやすくすることを目的に、2008年に開発されたそうです。
またクラウド上でGitを用いたバージョン管理(ソースコード)が可能で、主にソースコードの変更点について他のメンバーにレビュー依頼ができる機能。レビューがOKとなったソースコードだけを反映させることができるので、品質の向上に役立ちます。

ただGitHub のようなGitのホスティングサービスは、他にもあるそうで、Gitを使うためには必ずGitHubを使わねば……というわけではないようです。気になる方は詳しく調べていただければと思います。


###Gitとは...![スクリーンショット 2022-01-12 12.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422183/c5d6036e-b1cb-bcef-ce35-2c5f8a8ad3c6.png)


常に最新のソースコードを誰がどこを変更したかなどを管理するツール。
機能としては、ソースコードの履歴を「リポジトリ」と呼ばれる場所で管理し、ソースコードを変更したら、開発者はリポジトリに履歴を記録します。全ての変更が記録されるため、過去のある時点にソースコードを戻す、ということも可能になります。

リポジトリは二つあり、「リモートリポジトリ」(複数人で共有するためのリポジトリ)の他に、開発者ごとに「ローカルリポジトリ」(ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリ)を持つ仕組みになっています。こういったリポジトリの仕組みを持ったバージョン管理システムを分散型バージョン管理システムと言います。


###GitとGitHubを使った作業の流れ&3つのコマンドを使うタイミング
１.リポジトリを作成します。

2.ソースコードの作成、編集を行います。

3.新規作成、変更、削除をGitのインデックスに追加します。

4.インデックスに追加された内容をローカルリポジトリにコミットします。

5.ローカルリポジトリの内容をリモートリポジトリ（GitHub）にプッシュします。


今回は`3~5`で必要なコマンド`3つ`を紹介させていただきます。

#####- git add
#####- git commit
#####- git push

また、`１.リポジトリを作成する`はGitHubのWEBページからの作成かターミナルでのgit initコマンドにより作成が可能です。私もですが、初心者にはGitHubで作成したほうがわかりやすく、作成も楽だと思います。

GitHub=https://docs.github.com/ja/get-started/quickstart/create-a-repo
Git=https://www.sejuku.net/blog/71268

#それぞれのコマンドの説明


###1.  git add ファイル名　[インデックスに追加する]

先ほど紹介した、『GitとGitHubを使った作業の流れ』の`3`の部分で使うコマンドになります！

１.リポジトリを作成します。

2.ソースコードの作成、編集を行います。

`3.新規作成、変更、削除をGitのインデックスに追加します。`

4.インデックスに追加された内容をローカルリポジトリにコミットします。。

5.ローカルリポジトリの内容をリモートリポジトリ（GitHub）にプッシュします。




#####インデックスに追加とは、リモートリポジトリにプッシュするためにどうしても必要な操作。![スクリーンショット 2022-01-12 12.26.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422183/62535494-af50-3bc8-2068-48d47a7a8f68.png)
`ワークツリー（みんなが作業・編集を行う場所のこと）
↓
インデックスに追加
↓
コミットをしリモートリポジトリ（GitHub）にプッシュします。`


コミットでファイルの状態を記録するためには、まずインデックスにファイルを登録する必要があります。インデックスを間に挟むことで、ワークツリー内の必要ないファイルを含めずにコミットを行ったり、ファイルの一部の変更だけをインデックスに登録してコミットすることができます。




######「git add ファイル名」で、指定したファイルをインデックス（ステージングエリア）に追加します。「git add .」ではカレントディレクトリにある全てのファイルが追加の対象となります。


###2.  `git commit `　[ローカルリポジトリにコミットする]
こちらは先ほど紹介した、『GitとGitHubを使った作業の流れ』の`4`の部分で使うコマンドになります！

また、『コミットする』とは、追加・修正・変更したファイルをGitに登録するための必須作業を指します。

１.リポジトリを作成します。

2.ソースコードの作成、編集を行います。

3.新規作成、変更、削除をGitのインデックスに追加します。

`4.インデックスに追加された内容をローカルリポジトリにコミットします。`

5.ローカルリポジトリの内容をリモートリポジトリ（GitHub）にプッシュします。


#####`git commit　`を入力するとコミットメッセージを入力するためのエディターが起動します。

基本的な入力は以下のような書き方をします。

`1行目`にはコミットタイトル
`2行目`には空白行
`3行目`以降に詳細を書きます。

`git commit `　で使える便利なオプションコマンド　▽

- git commit 「-v」`オプションを指定することで、変更点を表示しながら、コミットメッセージを入力するためのエディターを起動、コミットメッセージを入力することができます。

- また、「-m」オプションを指定することで、エディターを起動することなく、コミットメッセージも指定してコミットすることができます。

git commit -m "コミットメッセージ"


参考URL:https://pyteyon.hatenablog.com/entry/2020/02/27/092101
参考URL:https://techacademy.jp/magazine/10172


#####※ただし、初回のみ管理対象を決めるために「git add」コマンド操作が必要。「-m --allow-empty」でメッセージ入力用のエディタを開かずにコミットできる。

###3. `git push` 　[リモートリポジトリ（GitHub）にプッシュする]

『プッシュ』を実行すると、リモートリポジトリに自分の変更履歴がアップロードされて、リモートリポジトリ内の変更履歴がローカルリポジトリの変更履歴と同じ状態になります。

次は、『GitとGitHubを使った作業の流れ』の`5`の部分になります！

１.リポジトリを作成します。

2.ソースコードの作成、編集を行います。

3.新規作成、変更、削除をGitのインデックスに追加します。

4.インデックスに追加された内容をローカルリポジトリにコミットします。

`5.ローカルリポジトリの内容をリモートリポジトリ（GitHub）にプッシュします。`



ローカルリポジトリの内容をリモートリポジトリに送信（アップロード）するコマンドです。

git pushを入力（送信先を指定しなかった場合はブランチとして設定されている場所に送信します。）




###その他よく使うコマンド git status　[現在の状況を確認する]　

上記の３コマンド以外にも、状態を確認するためによく使うコマンドがあるので紹介します。
ローカルリポジトリ内でソースコードの変更などが行われているファイルの現在の状況を確認できるコマンドです。

変更になっているファイルを表示してくれるので、どんな名前のファイルだっけ？などの確認でも使えるので、忘れっぽい私は、念の為毎回確認するようにしています。

【手順】
1. macの場合ターミナルを開きます。（必要であればcdで目的のターミナルに移動）
2. git statusと打ちこみます。





#｜さいごに
紹介させていただいた、git add・git commit・git pushは他のオプションコマンドも存在するようですが、今回は全てのオプションはご紹介できなかったので、気になる方はより詳しく検索していただければと思います。

長くなってしまいましたが、最後まで読んで下さった方ありがとうございました。