自分とこの環境下におけるGit & GitLabレクチャー

完全に研究室の学生教育用としてGit & GitLabレクチャーノートを作成する．
このページは全体の構成をあらわし，各所へのリンク集とする．
ソースコードをのせ行指定での説明(〇行目は~という意味，みたいな説明)をしているので"[Qiitaをより便利にするChrome拡張機能をつくりました](https://qiita.com/howdy39/items/e6136b8454099ebfef29#-%E6%8F%90%E4%BE%9B%E6%A9%9F%E8%83%BD)"を見ながら拡張機能を入れて行表示できるようにしておくと見やすいかも．

# 更新履歴:
2023/02/27:[初級](#初級)に[Git&GitLab:習うより慣れろ](https://qiita.com/NeK/items/f9017c968fadeb8a6a59)を追加
2022/11/01:[設定](#設定)に[Gitの基本設定について](https://qiita.com/NeK/items/07afaa384d2b91e55f65)を追加
2020/07/20:[初級](#初級)に[独自ルール:多人数開発のためのグループプロジェクトについて](https://qiita.com/NeK/items/2c4a8a7086c85d6461c0)を追記
2020/07/20:[初級](#初級)の[独自ルール:gitignoreの利用](https://qiita.com/NeK/items/0006d1edbf3d4a5a0442)を更新

# 対象
## 環境
- ユーザ使用PC
    - Gitがインストールされている研究室内のUbuntu Desktop
- GitLab
    - 研究室内のGitLabサーバ
    - 本当のFQDN, IPを使用するとまずいので，ここでは下記の名前とする．
        - FQDN:
            - gitlab.mylab.ac.jp
        - IP address:
            - 192.168.7.1

## 知っといてほしい知識

- [Git - Book]
    - とりあえず．基本．一読しておくように．情報いっぱいなので覚えなくてもよく，必要に応じて調べられるようにしておけば十分．
- [もし、異世界転生モノのチートスキルが「Gitコマンド」だったら【その１】](https://qiita.com/carotene4035/items/469569a5b5b9904f7d32)
- [【図解解説】これ1本でGitをマスターできるチュートリアル！【完全版】](https://qiita.com/Sicut_study/items/0318cc136c189b179b7f)

# Contents

## 紹介
- Gitって？
    - プログラムなどをバージョン管理するもの．
    - 自分のPCにて管理．
- GitLabって？
    - gitで管理するものをクラウドで管理してくれるサーバ．
    - 研究室においてあるサーバ上でファイルを管理．
    - 自分一人で管理するだけでなく他の人のファイルも扱え，みんなで管理できるようにしたもの．
        - もちろん権限を色々設定可．

## 設定
とりあえず見るべきは初級のみ．中級は慣れて時間が出来れば．上級はやらなくても別によし．

- 初級
    - [Git＆GitLabの初期設定](https://qiita.com/NeK/private/2b02b271ce4040610fc8)
- 中級
    - [Gitの基本設定について](https://qiita.com/NeK/items/07afaa384d2b91e55f65)
- 上級
    - [Git専用SSH公開鍵の作成](https://qiita.com/NeK/items/0599d11e69d7f0771c1b)

## レクチャー
それぞれの項目に対して以下を目標に作成．

- 読むのに5分以内
- やるのに15分以内
- 入り組んだ話は後に．
    - ただ，すぐに読めるようにリンクで対処

とりあえず見るべきは初級のみ．中級は慣れて時間が出来れば．上級はやらなくても別によし．

### 初級

- まずは．．．[Git&GitLab:習うより慣れろ](https://qiita.com/NeK/items/f9017c968fadeb8a6a59)
    - <font color="Red">作成したプログラムはすべてGitLabにアップロードしましょう！</font>
- [Git操作:概要と基本的な操作](https://qiita.com/NeK/private/799ded244da228da0969)
- [Git操作:タグとブランチ](https://qiita.com/NeK/private/5898220657e5da0ef04f)
- [独自ルール:gitignoreの利用](https://qiita.com/NeK/items/0006d1edbf3d4a5a0442)
- [独自ルール:多人数開発のためのグループプロジェクトについて](https://qiita.com/NeK/items/2c4a8a7086c85d6461c0)
- [独自ルール:多人数開発のためのGitLab・タグ・ブランチ](https://qiita.com/NeK/private/8c62c74335a77ecea7af)
- [独自ルール:Merge requestを使ったグループプロジェクト](https://qiita.com/NeK/items/9b4bf1816b9e67aef917)

### 中級

- [スニペット](https://docs.gitlab.com/ee/user/snippets.html)
    - 便利なプログラム(の一部)などを使いまわせるようにする機能
    - 上のバーの「さらに表示」-「スニペット」から登録しているものが表示
        - .gitignoreについてとりあえず登録しているので利用・参考に
- [Git操作:デフォルトブランチ名の変更](https://qiita.com/NeK/items/863ff25a46c6eefeb623)
    - 特にブランチ名:masterをmainへ変更するのに使用

### 上級

### まとめた一般的な情報
- [GitLab考察:グループプロジェクトについて](https://qiita.com/NeK/items/c8c2fc9405d50bcf24b1)

### future work

- 設定中級．改行コードの話など．
- submodule化．
    - プロジェクトを細かく分けましょう．
        - なので他のプロジェクトの関数などを使う機会が増えます．
        - [Git - サブモジュール]を見てsubmoduleの機能を積極的に使いましょう．
    - submoduleとsub treeの話
- チートシート準備？
- 前のバージョンにタグで戻す方法．
- git worktreeコマンドの紹介．
- グループプロジェクト内でのマージリクエストの流れ．
- コードレビューの使い方

## 参考
* [え？まだgit checkoutしてるの？](https://zenn.dev/gmomedia/articles/d9366fa84aadfd)

[Git - Book]:https://git-scm.com/book/ja/v2
[Git - サブモジュール]:https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E3%82%B5%E3%83%96%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB