これからgitでunity管理する手法を紹介します。
##まずは.gitnoreファイルの配置
gitnoreがあれば、gitに管理してほしくないファイルを教えられます。
GitHubでレポジトリを作る場合、これを選択すればほぼ大丈夫です。
↓今私使ってるgitnore 20190614
私がvscodeを使ってるので、.vscode/
ディレクトリを入れました。
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
Assets/AssetStoreTools*
# Visual Studio cache directory
.vs/
.vscode/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.opendb
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
# Unity3D Generated File On Crash Reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
↓gitnoreについて詳しく解説
https://qiita.com/anqooqie/items/110957797b3d5280c44f
##git×Unityの原則
1.作業する前にpullする。
2.チームメンバー同時に一つのシーンを弄らない。(コンフリクトが発生しやすい)
3.100MB以上のファイルをgitで管理しない(GitHubの制限)
4.scriptsを編集したあと、git add fileName
で編集したスクリプトだけpushする。デザイナーさんがシーンとかprefabを変更したあと、、多分すべてのファイルをアプロードしかできない...
だから万が一(実はよくあること)コンフリクトが場合どうしましょうか。
##禁断の技(使用危険)
####特定のファイルをあるブランチにアプロードしたい場合
$ git merge --abort
// conflict処理を中止
$ git checkout -b <newBranch> <origin/remoteBranch>
//newBranchを作って、それからリモートのremoteBranchと同期する、そして自動にnewBranchに切り替え
$ git checkout <branchName> <fileName>
//branchNameから強制的にfilenameを合併する。もし同じ名前のファイルがあれば、上書きされるので、大変危険なので、必ず新しいブランチを作って操作してください。
$ git push origin <name>:<remote name> -f
//強制的に<name>ブランチを<remote name>に上書きする。多変危険なので、新しいブランチで操作してください
$git branch -D <branchyName>
//強制的にブランチを削除する。多変危険なので、実行する前にチェックしてください。
↑使用する状況:プログラマーさんはテストするためにローカルでprefabをいじっているうち、デザイナーさんがprefabとシーンをリモートで更新した。こういう時、プログラマーがpullしたら、コンフリクトが発生します。この場合、さっきのようにデザイナーさんが更新したブランチをダウンロードして、それからgit checkout <branchName> <fileName>
で必要なファイルをローカルのブランチに上書きする。
####強制的にリモートブランチをローカルブランチに上書きしたい場合(危険なので、masterブランチでやらないほうがいい)
$ git fetch -all
//すべてのリモートブランチをローカルにダウンロードするが、mergeしない(pull=fetch+merge)
$ git reset --hard origin/branchName
//強制的に現在のブランチをorigin/branchName の状態にする、ログも残されない。大変危険なので、マスターブランチでやらない方がいい。やる前は必ずチェックしてください。