既存のUnityプロジェクトにgithubを導入する方法

【想定読者】
・gitの導入が済んでいる方
・githubのアカウントを持っている方
・lfsの導入が済んでいる方
・Unityプロジェクトを持っている方

(1) githubでリモートリポジトリを作成する。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035506/a492198e-4485-44fc-8002-112066ca279f.png)

Add .gitignoreにチェックを入れて、Unityを選択しておきましょう。
Public/Privateの設定は、他の人に公開しないならばPrivateに設定しましょう。

(2) 出来上がったリポジトリのURLを確認する。(3で使います)
![github.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035506/2c5c8b6b-b7e2-d23f-f7cc-57b054285271.png)

リポジトリを開いて一番最初に出てくる画面の、
緑色のCodeというボタンを押すと表示されるURLです。
(2021/6/13現在)

(3) 自分のUnityプロジェクトにgitを導入する。

```
git init
git remote add origin [2のurl]
```
コマンドプロンプト(Macの場合はターミナル)で**自分のUnityプロジェクトに移動し**、上記のコマンドを実行する。
私の実行環境では、下記のようなフォルダです。
![unityproject.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035506/06b782f5-e622-46dc-c39d-073ec99f079a.png)

実行しても何も表示されないので、不安な方は「git remote -v」というコマンドを実行して、2のURLが表示されれば成功です。

(4) リモートの情報を取り込む

```
git pull origin main
```

(5) Unityプロジェクトの情報をリモートリポジトリに反映する

```
git add .
git commit -m "Add project"
git push origin main
```
[git add .]は、gitで管理するファイルを選択するコマンドです。[.]は全てという意味ですが、個別に指定したい場合はファイル名/フォルダ名を入力します。
[git commit -m "Add project"] 選択したファイルを実際にコミットするコマンドです。["Add project"]の部分は自由に決められるメッセージですが、あとで識別しやすいような文章を入れるのがおすすめです。
[git push origin main]実際にリモートリポジトリに反映するコマンドです。gitのバージョンによっては、[main]の部分を[master:main]とする必要があるかもしれません。
これは自分のmasterローカルブランチからmainリモートブランチへ送信するという意味です。
ローカルもリモートもどちらもmainの場合は、main:mainと書かずにmainと省略できます。

(6) lfsを導入する

```
git lfs install
git lfs track "*.png"
```
[git lfs track]コマンドでlfsで管理するファイルを選択します。
[git lfs track "*.png"]コマンドでpngファイルを全てlfsで管理するように設定できます。
一度上記のコマンドを実行した後はカレントディレクトリに[.gitattributes]ファイルが出来上がるので、それを直接編集するのがおすすめです。

```言語:.gitattributesの例
*.cs diff=csharp text
*.cginc text
*.shader text

*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf


## git-lfs ##

#Image
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.ai filter=lfs diff=lfs merge=lfs -text


#Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text


#Video
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text


#3D Object
*.FBX filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

#ETC
*.a filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text

#Asset
*.asset filter=lfs diff=lfs merge=lfs -text
```

(7) lfsの導入をリモートリポジトリに反映する。

```
git add .
git commit -m "Add lfs"
git push origin main
```

# 備考
今回は全てコマンドで実行しましたが、SourceTreeなどのソフトを利用してもいいと思います。
git, github, lfsの導入方法は別の記事に残すかもしれないです。
Jenkinsを使ってgithubで管理しているUnityプロジェクトを一括でビルドする方法も記事にしたいです。