レガシー環境でもGitに触れよう！

# 目的

- レガシー環境でGitに触れられず困っているエンジニアにGitでのバージョン管理をもっと身近に感じてもらう

# この記事のターゲット

- 普段の業務でもGitを使用したい方
- 遊び感覚でもいいからGitに触れてみたい方
- 自分のドキュメントだけでも良いのでバージョン管理したい方
- 業務ないでGitは使用しているが、壊したら怖いのでまず慣れたい方

# 前提条件

- OS: Windows10 64bit
- インストール時にHome直下に書き込み権限がある。
- WSL(バージョンは問わないが筆者は18.04)がインストールされており使用できる状態になっている。(インストール方法は下記に記載)
    - [Windows10にWSL(Ubuntu18.04)を導入する]()
    - [Windows10にWSL(Ubuntu18.04)を導入する ~プロキシ環境下編~]()
    - [Microsoft Store にアクセスできなくてもWSLを入れられるよ！]()リンク先作成中

# どんなことをするのか

- ローカルリポジトリを別のディレクトリに二つつくる。
- 二つのローカルリポジトリのうち一つをリモートリポジトリ役、一つをローカルリポジトリ役と勝手に決める。
- リモート役からローカル役へcloneする。

# 実施方法概要

1. Gitの設定
1. リモート役リポジトリの作成
1. リモート役リポジトリのclone
1. pushテスト

# 実施方法詳細

1. Gitの設定
    1. WSLのターミナル画面(コマンドが打てる黒い画面)を起動する。
    1. 下記コマンドを実行してgitを使う人のユーザ名を設定する。
        - ユーザ名は後から再設定できる。
        - 英数字で入力する。
        - 個人で勉強するレベルならなんでも良い(Githubを使うようになってくるとこの辺はちょっと変わってくる。)
        - 本作業はあくまでこのPCの中だけの設定である。

            ```terminal
        $ git config --global user.name "英数字でユーザ名を入力"
            ```

1. 下記コマンドを実行してgitを使う人のメールアドレスを設定する。
      - メールアドレスは後から再設定できる。
      - 個人で勉強するレベルならなんでも良い(Githubを使うようになってくるとこの辺はちょっと変わってくる。)
      - 本作業はあくまでこのPCの中だけの設定である。

          ```terminal
            $ git config --global user.email "メールアドレス"
          ```

1. リモート役リポジトリの作成
    1. 下記コマンドを実行してリモートリポジトリを置いておくディレクトリを作成する。

        ```terminal
        $ cd
        $ mkdir role_of_remote_repository
        ```

    1. 下記コマンドを実行してリモートリポジトリとしてバージョン管理を行うディレクトリを作成する。(study_gitフォルダのお名前は任意のものでもOK)

        ```terminal
        $ mkdir ~/role_of_remote_repository/study_git
        ```

    1. 下記コマンドを実行してstudy_gitフォルダをGit管理する。(`>`の後ろはターミナルに出力された内容)

        ```
        $ cd ~/role_of_remote_repository/study_git
        $ git init
        > Initialized empty Git repository in ...
        $ ll
        >.git
        ```  
 
        `.git`ディレクトリが作成されていればOKである。

    1. 下記コマンドを実行して最初のコミットを行う。
        - 最初のコミットをすることにより、バージョン管理する準備が整う
        - 必ず実施する通過儀礼みたいなものである。
        - あまり深いことは考えずに実施しよう。

        ```terminal
        cd ~/role_of_remote_repository/study_git
        $ git commit --allow-empty -m "first commit"
        >[master (root-commit) xxxxxxx] first commit
        ```

    1. 下記コマンドを実行してリモート役のリポジトリにpushできるように設定を行う。

        ```terminal
        $ cd ~/role_of_remote_repository/study_git
        $ git config --bool core.bare true
        ```

1. リモート役リポジトリのclone
    1. 下記コマンドを実行してリモート役のリポジトリをcloneするディレクトリを作成する。

        ```terminal
        $ cd
        $ mkdir ~/work
        ```

    1. 下記コマンドを実行してリモート役のリポジトリをcloneする。`study_git`ディレクトリが存在して入ればOKである。

        ```terminal
        $ cd ~/work
        $ git clone ~/role_of_remote_repository/study_git/.git
        >Cloning into 'study_git'
        >done.
        $ ll
        >study_git
        ```

1. pushテスト
    1. 下記コマンドを実行して先にcloneしたディレクトリに移動する。
    
        ```terminal
        $ ~/work/study_git
        ```
 
    1. 下記コマンドを実行してテスト用のファイルを作成する。

        ```terminal
        $ echo "aaa" >> test.txt
        ```

    1. 下記コマンドを実行してファイルのステータスを確認する。赤い文字で`test.txt`と表示されればOKである。

        ```terminal
        $ git status
        ```

    1. 下記コマンドを実行して`test.txt`をステージングする。

        ```terminal
        $ git add test.txt
        ```

    1. 下記コマンドを実行して`test.txt`をコミットしてコミットメッセージを記載する。画面が切り替わってエディタが開いたら一行目に`Add:...`を記載して、保存して、エディタを閉じる。

        ```terminal
        $ git commit
        ```

        ```txt
        Add: Study file for initial.
        ```

    1. 下記のコマンドを実行してリモート役のリポジトリにpushをする。

        ```terminal
        $ git push origin master
        ```

    1. エラーが出なければ環境は整ったことになる。