GitLabの使い方メモ

#はじめに
Gitを扱う上での知識を整理しておきたいと思います。

#参考情報
+ Git/gitlabで共同作業をするための最小限の知識  
https://doss.eidos.ic.i.u-tokyo.ac.jp/html/git.html
+ Git用語集  
https://qiita.com/toshi_um/items/72c9d929a600323b2e77
+ サルでもわかるGit入門  
https://backlog.com/ja/git-tutorial/intro/01/
+ 独習Git  
https://www.amazon.co.jp/dp/4798144614

#特徴
##バージョン管理システムの特徴
+ バージョニング（改版）
+ オーディティング（監査）
+ ブランチング（分岐）

##Gitの特徴
+ 分散されたリポジトリ
+ 素早いブランチ
+ ステージングエリア

#GitLabのユーザ権限

+ Guest
+ Reporter
+ Developer
+ Master
+ Owner

###権限範囲
Guest < Reporter < Developer < Master

詳しくは以下参照。
https://qiita.com/mats16/items/f11e2e25731c325eeda8


#プロジェクトの作り方
「New Project」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/8ad5b19b-6fa1-a4b7-3bfc-071f0ac62704.png)

各項目を入力する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/7c2e3067-314d-7c53-4dc6-42d8c97f2e6c.png)

|項目|概要|
|---|---|
|Project name|プロジェクト名|
|Project URL|参加しているグループ、または個人ユーザーから選択する。|
|Project Slug|Project name を入力すると自動設定される。<br>任意に変更できるようだ。|
|Project description(optional)|プロジェクト詳細を書く。入力は任意。|
|Visible Level|Private　：　一般公開しない。または権限を与えられたユーザのみ利用可能とする。<br>Public　：　一般公開する。|
|Initialize repository with a README|プロジェクト作成時にREADMEを作成するかどうか。<br>別プロジェクトからインポートする場合はチェック不要。|
|Create Project|各入力が完了したらプロジェクトを作成する。|

##その他のプロジェクト作成方法
作成ページのタブで選択可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/ca89f63d-c1c3-6ef3-dc49-d1eed60f4264.png)

+ 空のプロジェクト作成
+ テンプレートからの作成
+ 他プロジェクトからのインポート
+ CI/CDのみ利用

#プロジェクトのメニュー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/fb3d5e1f-fff6-f906-9de5-701552127715.png)

|メニュー|概要|
|---|---|
|Project overview|プロジェクトの概要、詳細、アクティビティなどを確認できる。|
|Issues|バグ、タスク、アイデアなどの共有を行う。|
|Merge Requests|開発中のブランチを本流のブランチにマージしたいときに使う。<br>Github では Pull Requestに該当する。|
|CI/CD|メニュー：Pipelines, Jobs, Schedules, Charts<br>ビルド、デプロイ等を行うパイプラインを組むことが出来る。|
|Operations|メニュー：Metrics, Enviroments, Error Tracing|
|Packages|メニュー：Container Registry|
|Wiki|Wiki機能。|
|Snippets|Snippetsの管理機能。<br>コードの切れ端（一部）を再利用できるように登録しておく。<br>public, internal, private のスコープ設定ができる。|
|Settings|各種設定|


#ローカルモジュールをGitに登録
ローカルのモジュールを全てまとめて登録する方法。
リポジトリはあらかじめWebGUIで登録してある前提。

```
git clone https://github.com/user/hoge.git
cd hoge
git add *
git commit -m "コメント"
git push -u origin master
```



#Issuesの使い方
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/a8f9230f-4c77-7a9d-c777-e8c4a8a30d8d.png)

|項目|概要|
|---|---|
|Title|タイトル|
|Description|バグ等の詳細。|
|「This issue is confidential and should only be visible to team members with at least Reporter access.」|機密事項の場合にチェック。<br>|少なくともReporterへのアクセス権を持つチームメンバーにのみ表示される。|
|Assignee|担当者を選択する。|
|Milestone||
|Labels||
|Due date|期限日。|
|Submit issue|登録。|


##Windows版Gitでの認証情報
+ Windows資格情報で管理される。
+ https://cpoint-lab.co.jp/article/201804/2137/


#ユーザー名設定＆確認
```bash
$ git config --global user.name "Hoge"

$ git config --global user.name
Hoge
```

#メールアドレス設定＆確認
```bash
$ git config --global user.email "hoge123@hoge.hoge"

$ git config --global user.email
hoge123@hoge.hoge
```

#clone方法
+ ２つの方法（https経由、SSH経由）がある。
+ 別の方法でcloneしなおすにはリモートリポジトリの変更処理が必要。面倒なのではじめからどちらかに統一しておいた方が良い。
+ SSH経由の場合は、SSHキーの登録が必要


```
git clone <リポジトリURL>
```
###SSHのキー登録がない場合
以下の警告が出ることがある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494282/17588d69-1dbd-a8e0-783e-417e800aa80d.png)

###cloneはHTTP、SSHのどちらがよいのか。
+ 冒頭の参考サイトではSSH推奨。
+ GitHubではHTTPS推奨（https://teratail.com/questions/21345）
+ SSHが無難という意見もある（https://qiita.com/chroju/items/67da13c672efcd2bc787）
+ 結論：実運用の際に利便性を考慮して決めればよい。（のだと思う）