GitHub概要＆業務フロー

## 概要
エンジニアとして個人＆チーム開発をする中で必須のgit。

しかし、gitについては苦手意識を持つ人も多く、どのように扱えばいいのかわからない方も多いでしょう。

そこで、今回はgitの開発ツールとして一番有名なgituhubの手順一連とあれこれについてまとめました。
![github.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1180499/1873fe32-1dc5-cf7e-7768-551c3fd031b9.png)


## gitとは？
一言でいえばソース管理ツールです。

GitHubは、サーバーアプリケーションが無くても、ユーザー登録のみで使えるGitのWebサービスです。

### そもそもgitとは？

チーム開発では、一つのプロジェクトやサービスのコードについて複数人で開発や運用をかけていきます。

ソースコードのバージョンをいつ誰がどこを編集したのか、最新のバージョンはどれかなどを管理するツールとしてgitは利用されています

ソースコードの管理にはSubversionやツールが他にもあります。Gitの特徴は、ソースコードの記録や追跡などのバージョン管理が「分散型」であること。過去のロールバックが簡単になったり、修正履歴を整理してログに残したりが簡単で、エンジニアがより便利に使うことができます。
![git2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1180499/107ae396-4312-98d4-ae00-87d6b36f48aa.jpeg)
引用：[ガチで5分で分かる分散型バージョン管理システムGit](https://atmarkit.itmedia.co.jp/ait/articles/1307/05/news028_3.html)

## githubの初期構築


### githubを扱う方法

◇GUIツール

GitHub Desktop
[ダウンロード](https://desktop.github.com/)

Sourcetree
[ダウンロード](https://www.atlassian.com/ja/software/sourcetree)

◇CLIコマンド


GUIではより簡易に扱えますが、IT案件へ参画した際に頻度高く使用されることから、今回はターミナルからのCLIコマンドについて詳しく解説します。

### 構築手順

ここからは
チーム開発プロジェクトのメンバーになったつもりで記載していきます！

1、招待をしてもらおう！
まず、githubに登録または既存アカウントがあればユーザーIDを送付して招待してもらいます。

github登録をするとユーザーページを開くと
「caius.github.io/github_id/」
というURLとなります。
github_idがユーザーIDなのでこのURL自体を送付して招待をもらいます。

2、リポジトリをローカルPCに作成

下記ページからいくつかの方法でリポジトリが作成できます。
![20210723124958.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1180499/da136f4f-f036-e6fa-8c57-10f05c88654d.jpeg)
引用：[GitHubのcloneは、リポジトリをローカル環境に複製 gitやghで実行](https://style.potepan.com/articles/31870.html)

3、ssh接続する手順~公開鍵・秘密鍵の生成方法
詳細な有難い内容がありましたので割愛します。


画面右上の「Add SSH key」のボタンを押します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f34303739362f65386465646636652d353136382d616161392d363561612d3437363534623363636133642e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1180499/4589a32f-5498-b8cc-1195-ae5029f78226.png)


「title」に公開鍵名、「key」に公開鍵の中身を入れます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f34303739362f61363038326632652d656662642d323532382d323563322d3234316563646435396133632e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1180499/4641fe73-8b29-4530-dc56-4e90507ef1d0.png)


なお、鍵の中身のクリップボードへのコピーは
[引用：ssh接続する手順~公開鍵・秘密鍵の生成方法](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)



### 業務の流れ

gitを扱う上でフローをまとめました。
以下、「mermaid」が業務実行に伴うフローです。

```mermaid
graph TD;
    git-->git_clone_http;
    git-->zip_DL;
    git -->ssh;
    git_clone_http-->git_branch/新規作成;
    zip_DL-->git_branch/新規作成;
    ssh -->git_branch/新規作成;
    git_branch/新規作成 -->git_checkout_ブランチ名/新ブランチ切替;
    git_checkout_ブランチ名/新ブランチ切替 -->コード追加/編集;
    コード追加/編集-->git_log/最新を確認;
    git_log/最新を確認-->git_pull_main/mainブランチを最新へ;
    git_pull_main/mainブランチを最新へ-->git_add/変更を追加;
    git_add/変更を追加-->git_commit/上書き保存;
    git_commit/上書き保存-->git_push;
    git_push-->pull_requests/作成;
```
pull_requests作成ページ
(github.com/ユーザーID/PJ名/pulls)


### コマンド一覧

```shell
$ ssh-keygen -t rsa #鍵作成
$ cat id_rsa.pub #ssh-rsa~サーバー側のカギを表示
$ git clone git@~.git #gitクローン
$ git branch 名称 #新規ブランチ作成
$ git checkout #権限変更
$ git branch #ブランチ確認
$ git add #追加
$ git status
$ git push origin master
$ git commit
$ git log #ログの確認
$ git push origin 新規ブランチ名
```

## まとめ

今回は、二段階認証/秘密鍵とgitに苦手意識を持った私自身が体系的に理解できるよう「mermaid」でまとめましたので、ご参考になれば幸いです。