初学者の方は必見！エックスコードプロジェクトをGithubで管理する具体的な方法②

#概要
みなさん、こんにちは。

今回は、エックスコードプロジェクトをGithubで管理する具体的な方法②ということで、本記事は[[初学者の方は必見！エックスコードプロジェクトをGithubで管理する具体的な方法①]](https://qiita.com/syunta061689/items/2f5f846f7a1846cc29fa)の続きとなっております。

***※今回、お伝えする内容は、エックスコード上や省略コマンドで簡単にできたりもしますが、あくまでも、わかりやすさを追求し、今回は何がなんでもGitHubでの管理をしたい人のための記事となっております。あらかじめ、ご了承ください。***

この記事をみる前に、Gitをはじめからていねいにをみることをお勧めします！
https://github.com/takanabe/introduction-to-git

###環境

・Xcode - 11.3.1

・git - 2.26.0

・CLI - ターミナル

#ブランチをきって作業する

少し、前回の復習をしましょう。みなさんは、様々なコマンドを使ってエックスコードファイルをGithub上に公開することができました。
![スクリーンショット 2020-11-06 0.20.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/770482/9c8c8d7a-c097-eceb-6745-4916e66f202e.png)

ここまでは、大丈夫ですかね？

では、実際にブランチをきって作業していきましょう

このコマンドを入力してください

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git checkout -b hotfix main
```

このコマンドを実行することで、mainから分岐したhotfixブランチを作成することができます。

確認してきましょう！

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git branch
* hotfix
  main
```

ちゃんと、hotfixブランチができていますね。

#エックスコードで作業をしよう

さて、ブランチを作成することができたので、実際にエックスコードで作業していきます。
ここでの作業は、何でもいいのでお好きな作業を行ってください。
![スクリーンショット 2020-11-06 16.57.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/770482/2377b8a7-4b83-7ff7-14df-a80b8773e83b.png)

ちなみに私は、ViewContorollerに変数を追加しました。


#コミットをしよう！

エックスコードプロジェクトで変更があったので、コミットをしていきます。
コマンドはわかりますよね？パート1の復習ですよ

まずは、コミットするためにファイルをセットします

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git add . 
```


```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git commit -m "犬と猫を追加"
```


私の作業では、犬と猫を追加したのでコミット名は上記のようにしときます。
みなさんはお好きな名前をつけてくださいね。

```swift:ターミナル
[hotfix 3b0b63c] 犬と猫を追加
 1 file changed, 2 insertions(+), 2 deletions(-)
```
***このような感じで出力されたらコミット成功です！***

確認していきましょう。

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git graph
* 3b0b63c  (HEAD -> hotfix) 2020-11-06 Yamada 犬と猫を追加
* 9e865bb  (origin/main, main) 2020-11-05 Yamada first commit
```

いい感じですね。


#リモートリポジトリに反映させよう!

コミットができたら、マージする必要があります。
マージとは、分岐していたブランチを一つにするコマンドです。

しかし、その前に、hotfixブランチは、リモートリポジトリを作成されていませんよね。

リモートリポジトリはorigin/mainのことです。つまり、origin/hotfixを必要があります。


では、作成していきましょう！

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git push origin hotfix:hotfix
```

このコマンドを入力すると、英語がたくさん出てきますが、

```swift:ターミナル
* [new branch]      hotfix -> hotfix
```

こんな感じの表示がされたらOKです！

では、確認していきましょう。

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git graph
* 3b0b63c  (HEAD -> hotfix, origin/hotfix) 2020-11-06 Yamada 犬と猫を追加
* 9e865bb  (origin/main, main) 2020-11-05 Yamada first commit
```

ちゃんと、 origin/hotfixが作成されてますね。

#マージをしよう！
ようやく、マージするところまで辿り着きました。少し疲れましたね。
後少しです。頑張りましょう。

まず、mainブランチに戻ります。

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git checkout main
```

確認をします。

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git branch
 hotfix
* main
```

しっかり切り替えができていますね。

では、マージしていきます！

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git merge --no-ff hotfix 
```

mergeにくっついている--no-ff コマンドはfast-forwardをさせないようにするためのコマンドです。

少しわかりにくいので、確認していきます。

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git graph
*   8beb13b  (HEAD -> main) 2020-11-06 Yamada Merge branch 'hotfix' into main
|\  
| * 3b0b63c  (origin/hotfix, hotfix) 2020-11-06 Yamada 犬と猫を追加
|/  
* 9e865bb  (origin/main) 2020-11-05 Yamada first commit
```

--no-ffコマンドをしようすると、margeした履歴も枝割れして残ります。

しかし、普通のmargeだと,***下記のような枝別れしないグラフになると思います。***

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git graph
* 3b0b63c  (main/origin/hotfix, hotfix) 2020-11-06 Yamada 犬と猫を追加
| 
|
|
* 9e865bb  (origin/main) 2020-11-05 Yamada first commit
```

これが、fast-forwardです。
枝分かれしない方がシンプルですが、margeした履歴が残らないのが欠点です。
どちらがいいかは会社の方針や個人の好みで決めます。

#プッシュをしよう！
さぁ、いよいよ最後です。
pushをしていきましょう！！

```swift:ターミナル
○○○○○@xxxxxxxxxxMBP ~ % git push
```
たくさん英語が出てきたらOKです。

Github上で確認してみましょう！

![スクリーンショット 2020-11-07 1.21.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/770482/ad19dd2c-f425-d2a4-46de-3b38b6b8cf6a.png)


![スクリーンショット 2020-11-06 20.01.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/770482/73184417-b61b-3423-5737-06d68b9a26be.png)


しっかりコミットの内容が反映できていますね。


#最後に
いかがだったでしょうか。今回は2記事にわたって、エックスコードプロジェクトをGithubで管理する方法をお伝えしてきましたが、みなさんはGithubに公開することができましたでしょうか？
***もちろん、これが完璧ではありません。もっと簡単な方法や短縮コマンドも存在します。***

しかし、今回はエックスコードプロジェクトをGithub上に公開し、管理するというところを目標にし。なるべく流れで理解しやすくすることを心がけました。

この記事を通して、多くの初学者の方がGithub上でコードを見ることができる喜びを味わっていただければ幸いです。

それでは！