Visual Studio　ローカルでバージョン管理(git)

# 概要
Visual Studio 2015とgit(ギット)を使い、別サーバーを立てずにスタンドアロンでバージョン管理する方法。

# 環境
* Windows 10 Home
* Visual Studio Community 2015 Update 3
* git for windows 2.10.2

# gitの概要
SVN(Subversion)やTFS(Team Foundation Server)と違い、マスタとなるリポジトリの他に、各ユーザー毎にリポジトリを持つ。
マスタであるリモートリポジトリからローカルリポジトリにデータをダウンロード(プル)し、修正したものをリモートリポジトリにアップロード(プッシュ)する。
今回はリモートリポジトリを用意せず、ローカルリポジトリだけ使用する。
![git81.png](https://qiita-image-store.s3.amazonaws.com/0/142879/8963d8f9-2f9e-5941-0fbd-e269763be2df.png)



ローカルでの作業は、作業ディレクトリで修正したものをステージングエリアに追加していき、ローカルリポジトリにコミットする。
ステージングエリアは、ひとまとめにコミットしたいファイルを登録しておく場所。
ステージングエリアを介さずに直接コミットすることも可能。
![git82.png](https://qiita-image-store.s3.amazonaws.com/0/142879/d461270e-5c1e-04b2-3725-19eee1c7d6bf.png)

# 初期設定

## gitのインストール

**※Visual Studioインストール時など、既にgitをインストール済みならこの作業は不要**

git for windowsをダウンロードしてインストールする。
[https://git-for-windows.github.io/](https://git-for-windows.github.io/)

gitインストール先の指定
![git01.png](https://qiita-image-store.s3.amazonaws.com/0/142879/b8d68c76-149e-477c-5fa3-e91bc2da09f1.png)

インストールするコンポーネントの選択
![git02.png](https://qiita-image-store.s3.amazonaws.com/0/142879/6dd2accd-460e-afdf-d02b-02b326494004.png)

PATH環境変数の調整
![git03.png](https://qiita-image-store.s3.amazonaws.com/0/142879/6e59eb4a-7a3c-1a67-cee1-0951bc36eb5a.png)

テキストファイルの改行コードの扱い
![git04.png](https://qiita-image-store.s3.amazonaws.com/0/142879/e5ddd5fc-6941-1f95-50c9-795e632cfed9.png)

git bashで使用する端末エミュレーターの設定
![git05.png](https://qiita-image-store.s3.amazonaws.com/0/142879/1fe722f1-4ea6-c91b-8895-9b26d34a41f0.png)

追加オプションの設定
![git06.png](https://qiita-image-store.s3.amazonaws.com/0/142879/d893d031-813c-1a00-7d76-77a1ab1dcd07.png)

チェックボックスはすべて外して[Finish]を押す
![git07.png](https://qiita-image-store.s3.amazonaws.com/0/142879/4cec4f4d-20ff-71e4-c3ff-2d3bc02262cd.png)

## Visual Studioのプロジェクト作成・設定
プロジェクトを新規作成する。
プロジェクトの保存先は[参考サイト](http://qiita.com/Kosen-amai/items/ac030067ecbb932ffedf#%E5%8F%82%E8%80%83%E3%82%B5%E3%82%A4%E3%83%88)のサイト推奨の`%UserProfile%\Source\Repos`とする。
右下のチェックボックスが選択されていることを確認し、OKを押す。
![git08.png](https://qiita-image-store.s3.amazonaws.com/0/142879/42c6679e-6a74-a896-1aab-9ed03c02ca72.png)

チームエクスプローラーを開く。見当たらない場合は[表示]メニューから開く。
チームエクスプローラーで[設定]を選択。
![git09.png](https://qiita-image-store.s3.amazonaws.com/0/142879/dcca60f4-aa1f-d646-2a75-f021b25dd590.png)

[グローバル設定]を選択。
![git10.png](https://qiita-image-store.s3.amazonaws.com/0/142879/899e82f8-18af-830f-f7f2-262824973115.png)

[ユーザー名]と[電子メールアドレス]、[既定のリポジトリ場所]を入力し、[更新]ボタンを押す。
![git11.png](https://qiita-image-store.s3.amazonaws.com/0/142879/f8b574fd-12de-77d6-a838-9c6bcdb566a8.png)


設定更新後、チームエクスプローラー上部の戻るボタン![git11_2.png](https://qiita-image-store.s3.amazonaws.com/0/142879/24b058bf-b5be-1573-c284-a5d3e223103d.png)で前の画面に戻り、[リポジトリの設定]を選択。

オーバーライドのチェックボックスがOFFで、ユーザー名と電子メールアドレスにグローバル設定の内容が表示されていることを確認。
![git12.png](https://qiita-image-store.s3.amazonaws.com/0/142879/0be8328e-bf78-fcec-e264-2a07eeedcdb1.png)

# 使ってみる

## ステージングエリアへの追加

ソースを修正・保存し、チームエクスプローラーの[変更]を押す。
![git13.png](https://qiita-image-store.s3.amazonaws.com/0/142879/6e5c4d52-009e-ff94-3c57-1aad5c2a6d44.png)

修正したソースファイルを右クリック、[ステージ]を選択。
![git16.png](https://qiita-image-store.s3.amazonaws.com/0/142879/9f507a6d-4bd8-98c0-f11c-87627fe8f8ad.png)

ソースファイルが[ステージング済みの変更]に表示される。
右端にある[＋]（すべてをステージ）、[－]（すべてをアンステージ）ボタンを使ってもよい。
![git17.png](https://qiita-image-store.s3.amazonaws.com/0/142879/f84a482d-ced0-92f6-18b3-7c4c7c6716bf.png)

## ステージングエリアからリポジトリへのコミット

ステージングエリアに登録したソースファイルをコミットする。
テキストボックスに変更内容を入力し、[ステージング済みをコミット]を実行する。
![git18.png](https://qiita-image-store.s3.amazonaws.com/0/142879/4ae52849-5544-feab-a080-0e8c7df33792.png)

コミット完了
![git19.png](https://qiita-image-store.s3.amazonaws.com/0/142879/64a52525-2b0b-f24f-5e04-52c948e335e0.png)

## ステージングエリアを介さずリポジトリへコミット

2回目のソース修正、今度はステージングエリアを介さずにコミットするため、修正内容をテキストボックスに入力。
![git20.png](https://qiita-image-store.s3.amazonaws.com/0/142879/a1550288-03b8-e6f1-d248-dd476e3711e5.png)

[すべてをコミット]を実行
![git21.png](https://qiita-image-store.s3.amazonaws.com/0/142879/0a1ed705-da6a-457e-3921-be7aa69d43ab.png)

コミット完了
![git22.png](https://qiita-image-store.s3.amazonaws.com/0/142879/a81e5f5f-1ac9-3d36-87f0-40eae62dcffb.png)

3回目のソース修正、コミット
![git24.png](https://qiita-image-store.s3.amazonaws.com/0/142879/dfcb62cb-beac-4253-9997-3ec11566f7b6.png)

## 履歴の表示

[操作] - [履歴の表示]を選択
![git25.png](https://qiita-image-store.s3.amazonaws.com/0/142879/e174939a-2593-90de-05df-07928fba3d77.png)

履歴が表示される
![git26.png](https://qiita-image-store.s3.amazonaws.com/0/142879/95ea853c-d147-99f0-5c57-f6d622514f98.png)

## 履歴の比較

ソース単位での修正履歴を見る場合は、ソースファイルを右クリックして履歴の表示
![git27.png](https://qiita-image-store.s3.amazonaws.com/0/142879/f04ec826-b722-c4b6-a5ef-4e34af27f66d.png)

以前と比較
![git28.png](https://qiita-image-store.s3.amazonaws.com/0/142879/b0f313ae-9645-3b07-de92-0e5830af87c8.png)

比較結果
![git29.png](https://qiita-image-store.s3.amazonaws.com/0/142879/4a1029a0-9823-fc27-64aa-46d9986b828b.png)

Ctrl+クリックで履歴を2つ選択して比較
![git30.png](https://qiita-image-store.s3.amazonaws.com/0/142879/151f6ccb-127d-ddf0-359a-5344bd4551ce.png)

比較結果
![git31.png](https://qiita-image-store.s3.amazonaws.com/0/142879/f437cc44-9da1-6256-e118-e23ba63db826.png)

## 以前のバージョンに戻す

履歴を選択して[元に戻す]を実行。
![git32.png](https://qiita-image-store.s3.amazonaws.com/0/142879/54362ae2-74fe-f9c7-4879-8e1163b79d25.png)

確認ダイアログで[はい]を選択
![git33.png](https://qiita-image-store.s3.amazonaws.com/0/142879/9f3d1635-0e0e-8f21-47f8-38e7b1aea391.png)

[マージ]ボタンを押す
![git34.png](https://qiita-image-store.s3.amazonaws.com/0/142879/59f9893b-63a1-3e96-d646-4309de67b01f.png)

左上の[マージの許可]ボタンを押す
![git35.png](https://qiita-image-store.s3.amazonaws.com/0/142879/0918c63a-4290-f0d9-92d8-0eaed4843616.png)

確認ダイアログで[OK]を押す
![git36.png](https://qiita-image-store.s3.amazonaws.com/0/142879/0acb2f95-cea2-15c9-9064-6edf299bac96.png)

確認ダイアログで[はい]を押す
![git37.png](https://qiita-image-store.s3.amazonaws.com/0/142879/2f9754d6-cd77-b974-8872-42effef166b0.png)

以前のバージョンに戻った
![git38.png](https://qiita-image-store.s3.amazonaws.com/0/142879/6a34ca00-16e3-620e-a2b2-93d61212c413.png)

# 参考サイト
* [開発用コンピューターでの Git のセットアップ (構成、作成、クローン作成、追加) - MSDN](https://msdn.microsoft.com/ja-jp/library/hh850445.aspx)