Gitを理解せずにGitを使うための記事

# この記事の対象
先輩社員に突然「このリポジトリからブランチ切ってマージリクエスト出しといて」と言われ、何を言っているか何一つ分からなかった人のための記事です。

# 前書き
- 詳しい用語や仕組みなどは他の方が分かりやすい記事を書かれているので、そちらをご参照ください。
- 会社やグループでの対応想定なので、リポジトリの作成やGitのSSH設定などは省きます。
- 筆者の会社はGitLabを使っているのでGithubのことはよくわからないですが、たぶんほぼ同じだと思います。
- コマンドの中に出てくる「〓」で囲まれた部分は記号ごと書き換えてください
例)
```bash
echo 〓メッセージ〓
↓
echo example
```

# リポジトリって？
編集するべきデータが置かれている場所のことです。
言葉としてそういうものなんだ と思っておけば問題ないです。
とりあえず先輩に「リポジトリのURL教えてください」って言っておけばURLをくれます。

# リポジトリをクローンする
ここでやること
>**このリポジトリから** <font color="DarkGray">ブランチ切ってマージリクエスト出しといて</font>

編集するリポジトリでの作業が初めての場合、リポジトリから自分のPCにデータを持ってくる必要があります。
先輩に貰ったURLを開いて、SSHのURLをコピーします。
![GitLab画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630490/7054940c-b122-acdd-8c4f-5a7d7ffde54f.png)

自分のPCの任意のディレクトリでコマンドを実行して、データを持ってきます。
<font color="DarkGray">workフォルダを作成して、そこにデータを入れるのが筆者のおすすめです。</font>
```bash
git clone 〓コピーしたSSHのURL〓
```
特にエラーがなければ成功です。

# ブランチを切る
ここでやること
><font color="DarkGray">このリポジトリから</font> **ブランチ切って**<font color="DarkGray">マージリクエスト出しといて</font>

以下のコマンドを実行すれば完了です。
```bash
git checkout -b 〓作成したいブランチ名〓
```

「test」というブランチを作成した例です。
```bash
$ git checkout -b test
Switched to a new branch 'test'
```

ブランチの命名規則などは会社や部署によって違うので、とりあえず先輩に聞いておくのが吉です。

念のため、`git branch`コマンドを使ってちゃんとブランチが作成できたか確認してみましょう。
*が付いているブランチが今編集しているブランチです。
mainは最初からあるブランチで、いわゆるマスターブランチです。
```bash
$ git branch
  main
* test
```

# 編集&マージ
ここでやること
><font color="DarkGray">このリポジトリからブランチ切って</font>**マージリクエスト出しといて**

大きく分けて3段階あります。
- マージリクエストを作成する
- 編集する
- コミットする

順番にやっていきましょう。

## マージリクエストを作成する
GitLabではマージリクエスト、Githubではプルリクエストと呼ばれるものを作成します。
コマンドは以下です。
```bash
git push -u origin 〓作成したブランチ名〓
```
完了したらブラウザからGUIを使ってマージリクエストを作成します。
- Merge Requests → Create merge requestを選択
![Create merge request.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630490/ee98a0c1-aebf-934a-f932-9f72453c3c57.png)

- 必要事項を入力、選択してSubmit merge requestを選択
ここの内容はそれぞれルールがあると思うので、先輩に聞いてください。
![Submit merge request.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630490/18706146-64cb-29a5-79d2-0b88810d1d80.png)

## 編集する
先輩に指示された内容を編集しましょう。
分からない部分は勝手にやらずにとりあえず聞くのが吉です。

## コミットする
念のため`git status`コマンドで、編集したファイルが想定通りか確認しましょう。（別にやらなくてもいいです）
「modified:」「deleted:」「Untracked files:」の後に書いてあるのが該当するファイルです。
それぞれ
- modified → 編集
- deleted → 削除
- Untracked files → 新規

に該当します
```bash
$ git status
On branch test
Your branch is up to date with 'origin/test'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   test.txt
	deleted:    test2.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	test3.txt

no changes added to commit (use "git add" and/or "git commit -a")
```

編集ファイルが想定通りであれば、以下の3つのコマンドを順番に実施してください。
最初は呪文と思っていて大丈夫です。
２つ目のコマンドに含まれているコメントは、編集した内容を簡単に書きましょう。（add_○○module など）
```bash
git add .
```
```bash
git commit -m "〓編集内容等のコメント〓"
```
```bash
git push
```

これで先輩に指示された「このリポジトリからブランチ切ってマージリクエスト出しといて」は全て完了しました！
先輩に作業の報告をして、レビューを待ちましょう。
編集内容が間違っていた等の手戻りが出た場合は、`編集する`と`コミットする`をやり直せば大丈夫です。

# 最後に
最初はGitの仕組みを理解していなくても大丈夫ですが、そのうち覚えておくと損はないです。
~~ちなみに筆者はいまいち理解していないです。~~
Gitを理解できれば`コミットする`の最後3行の呪文の意味が分かります。

そのうちGitについての自分なりの理解を書きたい気持ちはあります。
Gitハトモダチ コワクナイ