【初心者】GitとGithubの扱い方をまとめてみました

# はじめに
個人での開発をスムーズに進めるため、また”チーム開発”をするときのためにも、**『Gitの概念や扱い方』**をしっかり理解しておく必要があると感じました。

僕が今参加している**『あべちゃんのフロントエンド塾』**でも”サブ課題”として掲げられているので、学習した内容をアウトプットしていこうと思います。

# Git

Gitとは**「バージョン管理ツール」**です。

開発をしていると、「エラー」が発生することは日常茶飯事で、そういったときにGitを使うことで**”エラーが出る前のデータ”**に戻したりすることが出来ます。

ゲームなどでいうところの**「セーブ、ロード」**みたいなものだと捉えています。


###【コマンド一覧】

僕がよく使うコマンドを書き出していきます。

###git clone
後述する"Github"上に**「リモートリポジトリ」**がある場合、`git clone リモートリポジトリのURL`とすることで、自身の**「ローカルリポジトリ」**にデータを”クローン”することが出来る。

###git pull
`git clone`のようにリモートリポジトリからローカルリポジトリへ、データをコピーできる。



###git init
ローカル環境で作ったディレクトリを”リポジトリ”に変換するためのコマンド。


###git add
何かのファイルに変更を加えた場合に、`git add ファイル名`とすることで、そのファイルを**”インデックス”**に登録することが出来る。
また、`git add .`とすることで、変更を加えたファイル”全て”をまとめてインデックスに登録することも可能。

###git commit
`git add`したファイルを`git push`出来るようにするために、コミットする必要があります。
`git commit -m "コメント"`とすることでpushする前の準備が整います。
”コメント”と書いてある部分には「どのような変更を加えたのか」という**”メモ”**を簡潔に残すことが出来ます。

###git status
ローカルリポジトリの”コミットの状況”などを見ることが出来ます。
まだ`git add`や`git commit`されていないファイルがあると”赤字”で表示されます。

`git checkout`でブランチを切り替える際にも、コミットされていないファイルなどがあるとエラーになるので、`git status`でこまめに確認をする。

###git remote add origin
`git remote add origin https://github.com/ユーザーネーム/リポジトリネーム.git`のようにすることで、Githubのリモートリポジトリとローカルリポジトリを連結することが出来ます。


###git push
リモートリポジトリにローカルリポジトリのデータを登録するコマンド。
`git push origin main`のように入力します。


###git log
git commitをしていくと"ログ"という「セーブポイントの記録」みたいなものが貯まっていきます。
`git log`をすることで、それらを見ることが出来て、さらに`git log --oneline`とすることで、たくさんコミットがある場合はそれらを**”1行”**ずつの、簡潔な表示にして見ることも可能です。


###git reset --hard HEAD
たとえば、一度git commitして”セーブ”したあとに、そこから更にファイルに変更を加えたとします。
でも「やっぱりこの変更微妙かもしれない」となったときに`git reset --hard HEAD`とすることで、”最後にコミット（セーブ）した場所”まで”リセット”することが出来ます


###git branch
基本、アプリなどを開発してリリースする場合は"mainブランチ"を使うことになるのですが、「何か修正・変更を加えたい」となったときにmainブランチで作業をしてしまうと、そのアプリを実際に使っている人たちにバグなどの影響を与えてしまうかもしれません。

なので、そういった修正などは”別のブランチ”を用意して、その中で作業をしていきます。

`git branch ブランチ名`とすることで、新しいブランチを作成出来て、`git branch`だけ入力すれば”現在作成されているブランチ”を一覧で見ることが出来ます。その中でも”色の付いている”ブランチ名は、”今自分がいるブランチ”ということを表しています。

###git checkout
`git checkout ブランチ名`とすることで、すでに作成しているブランチに”移動する”ことが出来ます。
ちなみに`git checkout -b ブランチ名`とすると、”新しくブランチを作りつつ、そのブランチに移動”することが出来て便利です。


# Github

GithubとはGitをオンライン上で管理するサービス。

”リモートリポジトリ”というものを作って、そこにデータを保存したり、そこからデータを取り出して色んな人と共同作業を出来るようにしたり、”静的”なアプリであればそこで作成したURLからそのアプリをブラウザで閲覧することもできます。


#### 【リモートリポジトリを作る】

画面右上にある**「New repository」**をクリック。

![FF196BE5-EAD0-40F7-8BB4-1240EC10EC5D_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1472874/c21f5460-d1d1-2997-ec46-9e7b05863b1a.jpeg)


上から順に、

1. 好きなリモートリポジトリの名前を付ける。
1. 世界中に公開してもいい場合は「Public」、嫌な場合は「Private」を選択。
1. 最後に「Create repository」でリモートリポジトリを作成。

![F1D9A27F-07BF-482D-8C14-2D6ABAB1AAD1_1_105_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1472874/680e2b80-efa1-5761-cfcc-9eee8caf9e3b.jpeg)

最後に、このような画面になってリモートリポジトリの完成です。

![E26197FB-7F25-42C7-9EEC-7DAD8D54E39E_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1472874/cfab2c14-b1bc-86f9-b823-7dfd22d72be1.jpeg)


# まとめ

基本的な内容を、自分なりにまとめてみました。

今回あらためて調べ直したことによって、`git merge`や**コンフリクトの解消**、**プルリクの作り方**など、あまり個人開発では触れていなかった部分を学ぶことができました。

冒頭でも言ったように、GitやGithubをしっかりと理解して使いこなせれば、開発をより「スムーズ、安全に」進めていくことができます。

今回学んだことを、自身の開発のなかでどんどん使っていき、体に染み込ませたいと思います。

まだまだ荒削りな記事ですが、自身の成長とともに内容をアップデートしていきたいと思っています。
また、記述内容に誤りなどもあるとは思いますが、フィードバック頂けますと幸いです。

最後までお読みいただき、ありがとうございました！


# 参考

https://youtu.be/LDOR5HfI_sQ

https://engineer-life.dev/sourcetree-how-to-use/

https://backlog.com/ja/git-tutorial/