突然Dockerコンテナ作成してみる話 資源管理を始めよう

# ファイㇽを安全に保存しよう

前回、この連載で初めてファイルを作りました。作成したファイルは管理しなければいけません。それも履歴付きで。だからって、ファイルシステムに連番つけて管理なんて辞めましょう。早晩、破綻します。今回は、こういった履歴付きでファイルを管理してくれる（SCM：Source Code Management）で、特に人気の高いgitを使ってみます。

なお、この記事では手順を紹介しています。Gitの概要は[そもそもGitって何よ。](https://qiita.com/shupeluter/items/3e64555cbd0476c7fff8)にまとめましたので、そちらをご参照ください。

この記事でできるようになることは。以下の通りです。

+ git hubでリポジトリ作成する。
+ ローカルのgitリポジトリを作成する。

ここまでであなたの資産の変更履歴は管理され始めます。

+ リモートリポジトリにgit hub リポジトリを登録する。
+ 資産をローカルリポジトリに登録する。
+ 資産をリモートリポジトリに登録する。

ここまでやって初めてあなたの資産は変更履歴をふくめて丸っと、安全な状態になります。なお、全体での作業スコープは以下の通りです。

![ProjectImages-github登録の作業スコープ.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/b98cc736-3340-fe9b-5bc4-1d5e4398cf09.png)

この作業にはGit Hubアカウントが必要になるので、事前にご用意ください。

## 作業前提

|No.|前提事項|備考|
|--|--|--|
|1|git hubアカウントを持っている|[Git Hub](https://github.com/signup)でアカウントを作成してください。|
|2|git がインストールされている|[こちらの記事](https://qiita.com/shupeluter/items/3ca0dfab64385d6da384#git-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)でインストールしてください。|

## 作業フロー

想定する作業フローを以下に示します。

![GitSequece.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/ed12040a-ec5a-307f-d02f-1dfea4b738bb.png)


## 1.git localリポジトリを作成する。

``` 
>git init C:\dev\workspace\             
Initialized empty Git repository in C:/dev/workspace/.git/
```

## 2.git hubリポジトリを作成する。

まず、[git hubにログイン](https://github.com/login)します。

![GitHubLogin.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/a2f294c0-f9cb-13e6-2ca4-1f1ed4f8fa22.jpeg)

ログイン後、右上の「+」ボタンを押して、「New repository」を選択してください。
  

  
![WS000004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/1f8fce7f-d490-8ea7-e239-ca7b08ea5abe.jpeg)

① リポジトリ名を入力してください。（英字、数字、アンダースコアのみ）
② リポジトリの説明を入力してください。
③ Privateにしておきましょう
④ 「Create Repository」を押下してリポジトリを作成してください。

![ProjectImages-githubrep作成.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/e46369a6-2f8c-0991-307a-832fd0515fcf.png)

次に遷移した画面で、リポジトリのURLを取得します。下の図の①を押下することでURLがクリップボードにコピーされます。

![ProjectImages-githubrep取得.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/13cdc060-3c96-ae05-c5d3-6cb32f8b0363.png)

あとで、リモートリポジトリを追加する際に利用しますので、クリップボードにコピー後、メモ帳などに一時保存しておいてください。

## 3.成果物をローカルリポジトリに登録する

カレントディレクトリをc:\dev\workspace\にして、git add .とgit commit -m "initial commit"を実行してください。

#### 3-1 カレントディレクトリをc:\dev\workspaceにする。
``` git
>cd c:\dev\workspace
```

#### 3-2 成果物の状態を確認する。

``` git
cd C:\dev\workspace
>git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        apiDesign.yml

nothing added to commit but untracked files present (use "git add" to track)
```

apiDesign.ymlはまだ一度も、commit していないため、**Untracked files**にとなります。

### 3-4 成果物を登録する

``` git
>git add apiDesign.yml
>git status 
c:\dev\workspace>git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   apiDesign.yml
```

変更を登録（ステージ）したので、状態は「Changes to be committed」になります。

### 3-5 成果物をコミットする

``` git
>git commit -m "initial commit"
[master (root-commit) d088b65] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 apiDesign.yml

>git status
On branch master
nothing to commit, working tree clean
```

全ての変更箇所がコミットされたため、状態は「nothing to commit, working tree clean」になります。


## 4.git hubリポジトリにローカルリポジトリを登録する。
## 5.git hubリポジトリに資産を登録する。

さて、全ての変更はgit repositoryに反映されました。これで私たちのリソースは安泰です。消えることはありません。**と思ってはいけません**実際には、.gitディレクトリの破損などによりいともあっさりと消えてしまうこともあります。私たちの資産を守るために、git hubに登録すましょう。

4,5の作業は実際にはいっしょに行われます。まずは、

#### 4-1 remoteリポジトリを追加します。

```
>cd c:\dev\workspace
>git remote add origin <取得していたURL> (https://github.com/xxxxx/sampleapi.git)
>git remote -v
origin  https://github.com/xxxxx/sampleapi.git (fetch)
origin  https://github.com/xxxxx/sampleapi.git (push)

```

### 4-2 git hubリポジトリに資産を登録する。

```
>git checkout -b main
>git push -u origin main　もしくは (git push --set-upstream origin main)

info: please complete authentication in your browser...
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 229 bytes | 229.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/atowaito/sampleapi.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
```

実行時にブラウザが起動され、認証が必要になります。必要に応じてログイン処理を実施してください。

![WS000007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/14fc0d63-45a2-2322-ec1b-0e922cd5b4e1.jpeg)
![WS000010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/837176/c89d1240-d541-fb90-1c4e-101ac9306167.jpeg)



### 番外編 git hub 認証
少し前から、git hubはユーザ名/パスワード認証を通さなくなりました。代わりにアクセストークンを利用することが可能です。将来的に必要になった場合は以下の記事を参照し、取得してください。

#### x-1 アクセストークンの取得
[こちらの記事](https://qiita.com/shiro01/items/e886aa1e4beb404f9038#%E5%8F%96%E5%BE%97%E6%89%8B%E9%A0%86)を参考にアクセストークンを取得してください。

### 免責事項

この資料は、本作業を行うために作成したものであり、本作業によって生じた損害については一切の責任を負いません。

[＜＜前の記事　　](https://qiita.com/shupeluter/items/7341c43b35595d4204a6) [お品書き](https://qiita.com/shupeluter/items/475b8354047c51e11173#%E3%81%8A%E5%93%81%E6%9B%B8%E3%81%8D) [　　次の記事＞＞](https://qiita.com/shupeluter/items/853db21db1c9d00cac7a)