Windows10にTortoiseGitと共有フォルダで簡単Git環境構築

# 1. はじめに
この記事は自社内で新卒にバージョン管理システムの使い方を覚えてもらうために作った資料です。
うちの会社は技術者派遣業を主とするため、開発環境は現場によってバラバラです。
組込み系の現場を想定しているため、もしかしたらバージョン管理をしていない現場に当たる可能性もある。。。
だからこそ、次の要件を満たすために資料を作りました。

* 研修中にバージョン管理を覚えてほしい
* 現場でも自分で環境を作れるようになってほしい
* 研修中の成果物を他者と簡単に共有できるようにしてほしい

## 1.1. 準備
共有フォルダ(ファイルサーバでも可)を用意しておくこと

## 1.2. バージョン管理は大事！
これまでに次のようなことを考えたことはないですか？

* どこを変更したか確認したい
例）過去の修正でバグが混入した！どこで変更したっけ！？

* 過去のコードに戻したい
例）昨日まで動いてたのに急に動かなくなった！

* 他の人が変更したコードをリアルタイムに取り込みたい
例）今すぐAさんのコードと結合して動作確認したい！

バージョン管理システムなら全部解決します！

ただし、次の3つのルールを守る必要はあります。
**1機能1コミット**
**毎日1コミット**
**コミットするときはコンパイルできるもの**

バージョン管理の本質は履歴を記録・管理することにあります。
そして、記録した履歴を簡単に戻したり、結合したりできることが求められます。

## 1.3. バージョン管理システムの管理方法
ネットワークで接続可能なマシンにデータを集約します。
そこからコードや履歴を含む情報をダウンロードしたり、アップロードして利用します。

## 1.4. Gitって？
Git(「ギット」と呼びます)はバージョン管理システムの1つです。
他にもCVS,Subversion(SVN),VSS, Mercurialなど様々な種類があります。
現在、ソフトウェア開発においてはGitが主流となってきています。

現場によってはSVNが運用されていることも多いです。

## 1.5. TortoiseGitって？
Git単体はコマンド操作だけしか対応していません。
GUI操作で感覚的に使えるようにしたクライアントソフトが多数存在します。
TortoiseGitもその一つです。

他にもSource Tree, Git Kraken, Smart Git, Git Eyeなど無償・有償の様々な種類があります。
今回はTortoiseSVNの兄弟ツールといえるTortoiseGitを利用します。
組込み系の現場ではSVNが主流だったりするので、Tortoiseシリーズを選択しました。

# 2. 環境構築
## 2.1. 各ツールのバージョン

| 名前 | バージョン | 備考 |
| :--- | :--- | :--- |
|Windows 10 Pro| 1709 | 64bit |
|Git| v2.16.2 | 64bit |
|TortoiseGit| v2.6.0 | 64bit |

## 2.1. Gitの導入

### ダウンロード
次のURLへアクセスし、[Download]ボタンをクリック
https://git-scm.com/
![NoName_2018-04-08_19-39_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/050e2d4d-7ad0-db50-bc9d-7168dc140d3d.png)

下の画面に変わると同時にダウンロードが開始
![NoName_2018-04-08_19-40_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/ed92e458-98f0-3a57-2613-a097295b4f73.png)
Git-2.16.2-64-bit.exeがダウンロードされたことを確認する

### インストール
ダウンロードしたインストーラ(Git-2.16.2-64-bit.exe)を実行
![Git 2162 Setup_2018-04-08_20-18_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/7e9e8833-baa7-0541-71c4-9c7829fe4316.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-23_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/de594505-efa6-cbb3-73d4-6d22704ccf5e.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/cedd1977-dcdf-a079-bef6-6088d3a3efff.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_01.png](https://qiita-image-store.s3.amazonaws.com/0/122879/c210c2a1-d8de-0989-0b67-17386ca4a6f4.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_02.png](https://qiita-image-store.s3.amazonaws.com/0/122879/183722da-0c60-8e88-e58f-9327855ce58c.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_03.png](https://qiita-image-store.s3.amazonaws.com/0/122879/8f12fa9a-1e68-52e1-13d7-17b4e378a8c1.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_04.png](https://qiita-image-store.s3.amazonaws.com/0/122879/8079a2c2-7d55-04f1-9ce2-961e1d030b53.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_05.png](https://qiita-image-store.s3.amazonaws.com/0/122879/b09bed1e-08d1-9914-2969-ffa750412cd8.png)

そのまま進む
![Git 2162 Setup_2018-04-08_20-24_06.png](https://qiita-image-store.s3.amazonaws.com/0/122879/d8d016c3-8081-5314-e196-8161f07f8e37.png)

<font color="Red">**[View Release Notes]のチェックをはずし、[Finish]をクリック**</font>

![Git 2162 Setup_2018-04-08_20-25_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/4359210f-5095-c35b-e36b-61c25f931b19.png)
チェックを外し忘れた場合はリリースノートを表示しようとしますが、無視してよいです。

## 2.2. TortoiseGitの導入

### ダウンロード
次のURLへアクセス
https://tortoisegit.org/

[Download]ボタンをクリック
![TortoiseGit – Windows Shell Interface to Git - Google Chrome_2018-04-08_20-28_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/1fea3a3e-fbb1-71b6-331d-a27bb9ab21a6.png)

[for 64-bit Windows]をクリック
![Download – TortoiseGit – Windows Shell Interface to Git - Google Chrome_2018-04-08_20-28_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/e61d9ea1-b4eb-0f40-8745-f955696499ac.png)
TortoiseGit-2.6.0.0-64bit.msiがダウンロードできたことを確認する

画面を下へスクロールし、日本語パックの64bit版をダウンロード
![Download – TortoiseGit – Windows Shell Interface to Git - Google Chrome_2018-04-08_20-28_01.png](https://qiita-image-store.s3.amazonaws.com/0/122879/1ed4666b-765a-31ca-d0e6-6c90075d57cc.png)
TortoiseGit-LanguagePack-2.6.0.0-64bit-ja.msiがダウンロードできたことを確認する


### 本体をインストール
インストーラ(TortoiseGit-2.6.0.0-64bit.msi)を実行
![TortoiseGit 2600 (64 bit) Setup_2018-04-08_20-29_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/c9370dd2-7abb-6297-3378-c5554403af5b.png)

そのまま進む
![TortoiseGit 2600 (64 bit) Setup_2018-04-08_20-29_01.png](https://qiita-image-store.s3.amazonaws.com/0/122879/d10f30db-3bbc-9593-d9de-ed53e4005d64.png)

そのまま進む
![TortoiseGit 2600 (64 bit) Setup_2018-04-08_20-29_02.png](https://qiita-image-store.s3.amazonaws.com/0/122879/52df423d-9db9-30ae-5567-8930a1f9d15c.png)

そのまま進む
![TortoiseGit 2600 (64 bit) Setup_2018-04-08_20-30_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/811a4a4b-126e-9062-e1db-d86e9ec43b20.png)

そのまま進む
![TortoiseGit 2600 (64 bit) Setup_2018-04-08_20-30_01.png](https://qiita-image-store.s3.amazonaws.com/0/122879/0f200bf8-b825-1dda-8ace-190918aa1a67.png)

<font color="Red">**[Run first start wizard]のチェックを外し、[Finish]をクリック**</font>
![TortoiseGit 2600 (64 bit) Setup_2018-04-08_20-30_02.png](https://qiita-image-store.s3.amazonaws.com/0/122879/3aca1ee4-6d38-e852-525a-79bd0b2fd97d.png)
チェックを外し忘れた場合、初期設定ウィザードが立ち上がるが、無視して一度閉じる

### 日本語パックをインストール
日本語パック(TortoiseGit-LanguagePack-2.6.0.0-64bit-ja.msi)をインストールする
![Japanese Languagepack for TortoiseGit セットアップ_2018-04-08_20-32_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/7acfc047-cf09-2265-aa69-064766eadad8.png)

<font color="Red">**[Configure TortoiseGit to use this language]にチェックを入れる**</font>
![Japanese Languagepack for TortoiseGit セットアップ_2018-04-08_20-33_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/11839638-b6e6-fee6-e75a-d0f250dc1c45.png)

デスクトップや適当なフォルダで右クリックし、コンテキストメニューにGit bashとTortoiseGitが表示されていることを確認する
![NoName_2018-04-08_21-04_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/e6d71ece-c280-2865-9125-fe4da0d943dc.png)

設定からユーザ名とメールアドレスを設定する

# 3. 運用・使い方
## 3.2. リポジトリの準備
リポジトリとは履歴とファイルの情報を持った場所
リポジトリには大きく2種類あり、作業用と共有用がある

#### リモートリポジトリを準備
アップロード先、共有用
情報のアップロードを受け付ける
ここでは直接ファイルを変更できない
履歴の変更は可能

リポジトリの作成 "git init --bare"
「XXXX.git」というフォルダを作成しておく
![GitRepo_2018-04-08_21-20_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/6eb6c643-e935-3370-2115-4ed157f44018.png)

対象のフォルダを選択したまま、右クリックでコンテキストメニューを開き、
[Git ここにリポジトリを作成]を実行
![GitRepo_2018-04-08_21-20_01.png](https://qiita-image-store.s3.amazonaws.com/0/122879/d1dbfcc8-cfb6-2a91-58df-7e96c0912a08.png)

[Bareを作成(作業ディレクトリーを作りません)]にチェックを入れ、[OK]ボタンをクリック
![LANDISK-31F890remotediskhikoworksamplegit - リポジトリの作成(Git Init) - TortoiseGit_2018-04-08_21-20_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/74a96427-f48d-35fe-60f5-5c21c1e07c5b.png)

そのまま[OK]をクリック
![GitRepo_2018-04-08_21-20_02.png](https://qiita-image-store.s3.amazonaws.com/0/122879/bee1bc15-bb3a-2c0a-705a-a9c9063c2796.png)

次のようなフォルダ階層となることを確認

```
sample.git
├─hooks
├─info
├─objects
│  ├─info
│  └─pack
└─refs
    ├─heads
    └─tags
```


#### ローカルリポジトリを準備
作業用のフォルダ
ファイルを変更し、履歴を追加していく

クローン(複製) "git clone"
リモートリポジトリの情報をすべて新規でダウンロードし、ローカルリポジトリを作ること
基本的に初回のみ行う

![test_2018-04-08_22-07_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/80a92e72-cef0-b9ff-2dee-2d637c596b5d.png)

![Git クローン - TortoiseGit_2018-04-08_22-06_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/68a899a0-eef7-44e7-9417-ec84cfa1162f.png)



## 3.2. 基本的な使い方
### 追加 "git add"
履歴の管理対象にファイルを追加
ファイルを選択し、右クリックから追加を選択
![Sample_2018-04-08_21-17_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/adec7ced-f54d-95f4-1628-9bb2c08f4488.png)

追加が完了したら[OK]をクリック
![追加 終了_2018-04-08_21-17_00.png](https://qiita-image-store.s3.amazonaws.com/0/122879/392e3ec6-f483-0f6a-1463-ab84388df128.png)

### コミット "git commit"
追加・削除・編集などのファイルの変更を履歴として登録すること


### プッシュ "git push"
コミット履歴をリモートリポジトリにアップロードすること

### プル "git pull"
リモートリポジトリの情報をローカルリポジトリにダウンロードすること

### フェッチ "git fetch"
リモートリポジトリの履歴情報だけをローカルリポジトリにダウンロードすること

## 3.4. 簡単Git運用フロー

リモートリポジトリがある場合の初回操作
1. クローン
2. ファイル編集
3. コミット
4. プッシュ

通常のファイル修正作業
1. プル
2. ファイル編集
3. コミット
4. プッシュ