6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git×Unity 禁断の技!(使用危険注意)

Posted at

これからgitでunity管理する手法を紹介します。

##まずは.gitnoreファイルの配置
gitnoreがあれば、gitに管理してほしくないファイルを教えられます。
image.png
GitHubでレポジトリを作る場合、これを選択すればほぼ大丈夫です。
↓今私使ってるgitnore 20190614
私がvscodeを使ってるので、.vscode/ディレクトリを入れました。

.gitnore
[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 の状態にする、ログも残されない。大変危険なので、マスターブランチでやらない方がいい。やる前は必ずチェックしてください。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?