開発に超最低限必要なgitコマンド[超入門][GUIのgitツール利用者向け]

## 目標と前提
* mac osを使っている
* gitを用いて作業ブランチを切るところから最新mainブランチの同期まで、必要な超最低限度使用するコマンドを使えるようになりたい
* Source TreeなどのGUIツールを使った開発には慣れているが、ターミナルでのgitコマンドには慣れていない
* 既にローカルリポジトリの作成をしている(git init)
* ターミナルでgitコマンドを利用するとやらかしそう
* 超入門者である

## gitコマンドの流れ

### 1.作業ブランチを切る
ローカルリポジトリのメインブランチから作業ブランチを切りましょう。

まずは`git checkout`コマンドで、mainブランチへ切り替えてください。
そのあと、`git branch hogehoge`で、"hogehoge"の部分を好きな名前にして作業ブランチを切ります。
ここでは"feature/hogehoge"とします。

```zsh:zsh
> git checkout main
> git branch feature/hogehoge

```

ローカルリポジトリに、新しいブランチ”feature/hogehoge”を切ることが出来ました。
続いて、`git branch`コマンドで切ったブランチを確認します。

```zsh:zsh
> git branch
  feature/hogehoge
* main
lines 1-1/1 (END)

```

このコマンドで、ローカルリポジトリ内のブランチ一覧を出力します。
"*"がついたブランチが現在のブランチとなります。
無事、"feature/hogehoge"という作業ブランチを確認できました。

### 2.作業ブランチに切り替える
現在mainブランチにいるので、先程切った作業ブランチに切り替えましょう。

```zsh:zsh
> git checkout feature/hogehoge
> git branch
* feature/hogehoge
  main
lines 1-1/1 (END)

```

ブランチを切り替えたら、`git branch`を実行し、ブランチが切り替わったことを確認してください。
"*"が、作業ブランチである"feature/hogehoge"に付きました。
これで開発を行うと、このブランチでcommitしていくことになります。

### 3.開発する
vimやVScodeなど、各種エディタで開発を行います。
現在の作業ブランチは"feature/hogehoge"ですので、他のブランチに影響することなく開発をしていることになります。
詳細はここでは記述しません。

### 4.リモートリポジトリにプッシュする
ローカルリポジトリの作業ブランチ"feature/hogehoge"で開発した変更を、リモートリポジトリに反映させるためにプッシュします。
まずは変更点があるか確認してみましょう。
`git status`コマンドの実行で、ブランチ内にアップデートがあれば、差分ファイルを確認できます。

```zsh:zsh
> git status

```

プッシュしていきます。
手順を踏んでリモートブランチへプッシュします。
`git add .`コマンドで、commitできる状態であるステージング状態に差分ファイルを持っていきます。
続いて`git commit`コマンドによりステージングにある差分をコミットします。
最後に、`git push`コマンドで、リモートリポジトリにブランチを生成し差分をプッシュしましょう。

```zsh:zsh
> git add .
> git commit -m "hogehoge部分の修正と実装"
> git push origin feature/hogehoge
> git status

```

念の為最後に`git status`を実行すると、差分ファイルが無いことがわかります。

### 5.github等でプルリクを出す
github等、リモートリポジトリでプルリクを出しましょう。
コードレビューをしてもらい、リモートリポジトリのmainブランチへマージしてください。
詳細はここでは記述しません。

### 6.リモートとローカルのmainブランチを同期する
リモートリポジトリのmainブランチはマージにより、差分を結合した最新ブランチとなりました。
ローカルのmainブランチも最新状態にしましょう。
まずは`git checkout`で同期したいブランチを指定します。
`git pull`コマンドで、持ってきたい最新のリモートリポジトリのmainブランチをプルします。

```zsh:zsh
> git checkout main
> git pull origin main

```

これで、ローカルのmainブランチを最新化することができました。
ここまでで、超最低限のgitを用いた開発の流れはできるのではないでしょうか、たぶん。

#### おまけ.不要となったローカルブランチを削除
開発を終え、マージもできました。
ローカルの不要なブランチを削除しちゃいましょう。

```zsh:zsh
> git branch -d feature/hogehoge
> git branch
* main
lines 1-1/1 (END)

```

最後に`git branch`で、ブランチの一覧を出力し、不要なブランチが消えていることを確認しています。

## 今回使用したgitコマンド一覧

* `git checkout hogehoge`　ブランチを切り替えるコマンド。ここではhogehogeブランチへ切り替えを指定しています。
* `git branch`　ローカルにあるブランチの一覧を出力し確認するコマンド。
* `git branch feature/hogehoge` ブランチを切るコマンド。ここでは"feature/hogehoge"ブランチを生成します。
* `git status`　現在の作業ブランチの差分を確認するコマンド。
* `git add .` 作業したファイルを"すべて"ステージング状態にするコマンド。この状態ではまだコミットもプッシュもされていない状態。
* `git commit -m "hogehoge"` ステージングにあるファイルをコミットするコマンド。"-m" を入力することでコメントを入力することができる。
* `git push origin hogehoge` コミットしたファイルをリモートのhogehogeブランチにプッシュするコマンド。
* `git pull origin main` リモートのmainをローカルにプルするコマンド。pullの概念については良さげな記事を友人に共有してもらったので後日噛み砕きます。
* `git branch -d hogehoge` ローカルのhogehogeブランチを削除するコマンド。

## まとめ
最低限必要なgitコマンドを用いれば、GUIを使わずともスマートに開発ができると思いました。
今までやらかしが怖くて、GUIのgitツールを使って作業していましたが、友人に教えてもらって半ば強引にターミナルで作業してみると、案外慣れるものだなと。

ただ、pullの概念など、もうちょっとちゃんと理解していないと後々にやらかすことになりそうなので、そのへんの勉強をしないといけないですね。

以上、qiita初投稿は自分への備忘録となりましたが、私のようなスーパー超入門者の方に少しでも参考になれば。
ここは正しくない！といった箇所があればぜひご教示ください。