じぶんのPCで完結するGitの運用 with SourceTree

前回の記事の続きです。

https://qiita.com/Subara3/items/cb9f33f91ddfffb07b98

# 対象
- 本職エンジニアではなく、Gitも（ほぼ）触ったことないけど、個人でゲーム作ったりしてる人
- Webサービスは使用せず、PC（あるいはOneDriveなど、自分の領域）で完結させたくて、SourceTreeを使いたい人

# Gitのリモートリポジトリとローカルリポジトリ

Gitにはリモートリポジトリとローカルリポジトリがあります。

 > リモートリポジトリとは、インターネット上あるいはその他ネットワーク上のどこかに存在するプロジェクトのことです。
    複数のリモートリポジトリを持つこともできますし、それぞれを読み込み専用にしたり読み書き可能にしたりすることもできます。

https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AE%E4%BD%9C%E6%A5%AD

イメージ的には（というか、通常は）本体がリモートリポジトリにあって、それをローカルリポジトリに持ってきて作業して、できたらリモートリポジトリに反映するようなことをします。

ちょっとややこしい話をします。リモートリポジトリとローカルリポジトリをどっちも自分のPCに置くこともできます。

前回ご説明した、これです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/f5283067-a864-3ef5-2077-c0341c0c31ea.png)

あ、もちろん、リモートリポジトリをPC内でなく、外部HDDにしたりすることもできます。

こうすると、Gitの「履歴の管理」だけを行うことができます。
ググるときのキーワードは「リモートリポジトリ」「ローカル環境」って感じでしょうか。

たとえば、知ってる範囲だと、卒論の管理などにこれを使ってる人がいらっしゃいましたね。

# Git for windowsの導入

https://gitforwindows.org/

Git for Windowsを入れます。
これの設定は、基本的にデフォルトでよいかと思います。

# SourceTreeの導入

公式サイトからSourceTreeをダウンロードしましょう。
https://www.sourcetreeapp.com/

基本的にはインストーラーにそって入れていきますが、Bitbucketアカウントはいらないです（親会社のソースコードお預かりサービスです）。スキップでいいでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/f3d91ee3-1ad2-c21e-7ef2-97695588ec94.png)

Mercurialもいらないかな。
まあ、ここは、Git for windowsを入れて置いたらよきに計らってもらえると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/7c856cee-24d5-945b-1576-b9903e98d68c.png)

ユーザー名とメールアドレスを設定します。Gitのログに使用されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/aa453bbe-70f6-a51d-027f-198b04675e0f.png)

SSHキーはとりあえずおうちgitならなくていいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/0d72e851-2ff4-d99e-7123-4873121d7a77.png)

でーきた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/28eaaead-ad8e-9a6b-be2d-2dfa288e8aaa.png)

# ローカルにリモートリポジトリを作る
ちょっと矛盾した文字列ですが、ローカルにリモートリポジトリを作ります。

これから作るもの
- なんたら.gitっていうリモートリポジトリ（bare)
- 作業フォルダ（もうすでにあってもよい/いったん空にして追加する）

## リモートリポジトリを作る
SourceTreeでベアリポジトリを作れなかったので、申し訳ないのですが、初回に限ってはGit CMDを使います。

作りたいフォルダの場所で、右クリックのショートカットメニューからGit bashを開きます。
[Open Git GUI Here]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/e8423b63-dc56-95cf-e47b-da9021dc6444.png)

コマンドを使用します。
ペーストはキーボードからはできませんが、右クリックするとできます。
プロジェクト名は好きな名前に置き換えてください。

.gitとつけておくのは、必須ではありませんが、慣習なので、つけておくとよいですね。
日本語パスにはあんまりよい思い出がないので、英数字がいいと思います。

```
git init --bare [プロジェクト名].git
```

こんな感じだ！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/a430fdea-1992-f6e7-b45a-3e272ccddc09.png)

フォルダの中身がこんな感じだったらOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/5f6799ee-f488-5476-ea6b-490110478a15.png)

この奇妙なフォルダに、履歴がたまっていくわけですね～。

このフォルダは、もうファイルエクスプローラーからは触りません。ものを入れないでね。

## ローカルリポジトリをクローンしてくる

SourceTreeで「Clone」します。

既に作業していて、ファイルがある場合は、いったん別のフォルダに退避させてください。
持ってくるときの初回は、空っぽのフォルダじゃないといけません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/b10d17e6-d421-cb5c-f4db-87c94c800cc3.png)

上がさっきつくったなんたら.gitで、下が実際の作業フォルダです。

## Git Flowを作る（初回作業）
.gitじゃないほうに（クローンしてきた作業フォルダの、ローカルリポジトリのほうに）ものを入れていきましょう。
これからの場合は作業を始めたら初めに行ってください。

今回は「first.txt」を追加しました。

そうしたら、historyから……。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/4052f9f4-b2cc-df15-e927-e6e57955b1e2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/30e396fa-84e0-b400-dc82-025c84aec64f.png)

インデックスに追加して……。

適当にコミット。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/b7f85471-9ac5-2e44-5d23-deb7ce54b0da.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/22a4c95d-ee5b-8d58-0b1c-d0065c140cda.png)

コミット出来たら、Git Flowで初期化だ～。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/e3c3e7a4-6af7-1cce-bde0-8bf2577a8259.png)

OKを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/32f67fb7-b1b9-0d8b-0f60-16a6897e40d7.png)

## 管理したくないファイルについて

ところで、git管理する必要がないファイルは、管理から外します。
具体的には、無視リスト（.gitignore）に追加します。
ビルド後のexeとか、重い素材ファイルとか、BGMとか、管理が要らないファイルは無視リストに追加して、gitで管理しないようにします。
ローカルなので、間違っても悪いことは起きませんが……。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/6806e1ca-8bc1-ed21-dad1-48101de9c312.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/2a1e3dcc-f8ed-110b-7e0b-478bbd8400d8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/e10c3a08-b914-86ee-cf60-9f3f97de01e8.png)

無視でファイルを追加すると.gitignoreが生成されます。
中身は普通のテキストファイルです。
ファイル名指定とか、フォルダの中身ごととかを指定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663038/67c52f90-006b-c0a6-bef1-b8160aa011a4.png)

たとえば、「/bgm」のフォルダを無視させようとすると、こういう記述になります（/bgmのフォルダを無視せよ）。
慣れてきたら、自分で書き足してもかまいません。

Gitは、基本的にコマンドとかでどーんってやってくやつで、SourceTreeはそれを見やすくしてくれている感じです。
というわけで、SourceTreeでは無理でも、コマンドラインからならなんとかなることもあります。

困ったら右上の「ターミナル」からコマンド操作に切り替えて操作します。

いやー、しかし、だいぶ正当じゃないきもするので、良いやり方があったら教えてください。

# 参考

https://qiita.com/devzooiiooz/items/56a02342d9d65d79f6c3