【脱Github desktop！】terminalを使ってgit操作

# 概要

学び始めてgitの操作をする時、Github desktopって便利ですよね。
GUIで直感的で楽ちん！ていうかなんていうか。

ですが、現役のエンジニアさんのお話を聞いていると、git操作はterminalから行っているとか！

本記事では、脱Github desktopのために、
terminalでの操作方法について記載していきます！

本記事の構成は以下の通りです。

- リポジトリの作成編
- ブランチを切って作業編

なお、初学者が書いている記事です。
間違いや、表現が正しくない部分などあればコメントいただけると幸いです！

# 環境

【環境】
macOS Catalina 10.15.7
Ruby on Rails 6.0.0
Ruby 2.6.5


【その他】
以下の前提で進めていきます。

- GitHubにアカウントを登録している
- rails newを実施し、アプリのディレクトリを作成している

# 操作方法

### リポジトリの作成編

#### 1, リモートリポジトリを作成

まずはGitHubにログインし、リモートリポジトリを作成します。

【やり方】
①Githubへサインインし、Repositories横の"New"をクリック
②リポジトリ名を入力し、公開するかしないかを選択します。その後、Create repositoryをクリックします。
③リモートリポジトリが作成されればOKです。

#### 2, ローカルリポジトリを作成~firstコミット

【やり方】
①terminalにて、アプリのディレクトリに移動します。
②git initコマンドを入力します。

```
 git_app % git init
Reinitialized existing Git repository in  #実行すると、この表示が出る。

 git_app %
```

railsの場合、このコマンドを打たなくても大丈夫です。（rails new時に自動で初期設定されるため）
ですが、他の言語でもそうとは限らないので、癖付のために入力してます。



③firstcommitしていきます。
以下コマンドを入力します。

```
 git_app % git add .
 git_app % git commit -m "first_commit"
```

ポイント：commit前にaddコマンドを入力します。
addは以下画像をみるとわかりやすいかと思います！

![スクリーンショット 2020-12-29 20.37.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697823/6f199b13-c58a-a9d8-3ba3-d73c8e0bfaff.png)

要するに、コミットするファイルを選択するといった感じですね。
全部選択するのか一部ファイル選択するのかみたいな。

今回は変更したファイルを全て選択したいので、git add に加えて「.」を記述します。


#### 3, ローカルリポジトリの内容をプッシュ

【やり方】
以下コマンドを入力してリモートリポジトリへプッシュします。

```
git_app % git remote add origin http://Github.com/ご自身のGithubID/アプリ名.git
git_app % git push -u origin master
```
pushするとき、アカウント名とパスワードの入力を求められるので、入力してください。
GitHubを開いて、commitが反映されていれば完了です！


### ブランチを切って作業編

何か作業をする際は、ブランチを切って作業します。
そのとき使う操作について記載します。

#### 1, ブランチを切る

【やり方】
以下のコマンドを入力して、ブランチを切ります。

```
git_app % git checkout -b "ブランチ名"
```
checkout -bとすることで、ブランチ作成後、そのブランチへ移動します。
ちなみに、今のブランチ名を確認したい時は、以下のコマンドを入力します。

```
 git_app % git branch
*master        #現在のブランチに*がつく
 hogebranch
 hugabranch
```


#### 2, 変更したもの全てor一部選択してコミットしプッシュする

【やり方】
addとcommitコマンドを入力し、コミットしていきます。

```
git_app % git add .　　　　　　　　　　　　　　#変更された全てのファイルを指定
git_app % git commit -m "〜のため、〜を実装"  #コミット名を設定
git_app % git push origin HEAD　　　　　　　#リモートリポジトリへプッシュ
```

HEADとすることで、ブランチ名を書かなくても勝手に推測してくれます。
ブランチ名が長くてもヘッチャラです。

ちなみに、
コミットするファイルを選択したい時は、
-iをつけると対話するような感じでファイルを選択することができます。

```
 git_app % git add -i
           staged     unstaged path
  1:    unchanged        +1/-2 app/views/layouts/application.html.erb
  2:    unchanged        +1/-1 app/views/layouts/mailer.html.erb
  3:    unchanged        +1/-0 app/views/layouts/mailer.text.erb

*** Commands ***
  1: status	  2: update	  3: revert	  4: add untracked
  5: patch	  6: diff	  7: quit	  8: help
What now>
```

数字を入力してエンターを押せば操作できます。
（それぞれの機能の説明は割愛します。）

今回のように、コミットするファイルを選択する場合は、
2を入力し、ファイルを選択していきます。

```
What now> 2
           staged     unstaged path
  1:    unchanged        +1/-2 app/views/layouts/application.html.erb
  2:    unchanged        +1/-1 app/views/layouts/mailer.html.erb
  3:    unchanged        +1/-0 app/views/layouts/mailer.text.erb
Update>> 1 #コミットしたいファイルの数字を一つずつ入力
           staged     unstaged path
* 1:    unchanged        +1/-2 app/views/layouts/application.html.erb
  2:    unchanged        +1/-1 app/views/layouts/mailer.html.erb
  3:    unchanged        +1/-0 app/views/layouts/mailer.text.erb
Update>> #選択されたファイルには*がつく
```

選択を終えたら、
空の状態でエンターを押し7もしくはCtrl + cで終了しコミットすればOKです。

あとはGithub上からプルリクエストを作成し、マージしましょう！！


# 参考にさせていただいた記事

ありがとうございました！！

- [【Rails入門】 Githubを導入する方法](https://www.sejuku.net/blog/34829)
- [【簡単解説】Git addコマンドの使い方](https://eng-entrance.com/git-add)
- [【Git】基本コマンド](https://qiita.com/konweb/items/621722f67fdd8f86a017)
- [gitを使用したブランチ作成からpushまでの簡単な流れ](https://qiita.com/infratoweb/items/5021a36f69f26dc7f0b9)
- [rails newしてからGitHubにリポジトリを作成するまでの流れ](https://qiita.com/tmyn470/items/338733077277eb8af8c4)