Edited at

Unityの余計なファイルをgit diffの対象外にする

More than 1 year has passed since last update.


問題:Unity立ち上げただけなのに差分が出てしまう

gitを綺麗にしてからUnityを起動すると見知らぬファイルの差分がたんまり...。

On branch develop

Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: myProject/Assets/App/Art/Effect/Mbo/USS.meta
modified: myProject/Assets/App/Art/shs/Materials.meta
modified: myProject/Assets/App/Art/tst/TO.meta
deleted: myProject/Assets/App/Art/sb/de/Ma/de_1053.meta
deleted: myProject/Assets/App/GameData/ER/Bu/Mo/de/Ma/de.meta
modified: myProject/Assets/App/GameData/ER/So/VO/10045.meta
deleted: myProject/Assets/App/GameData/ER/To/Un.meta
deleted: myProject/Assets/App/GameData/ER/UI/CD/cd_07.prefab.meta
deleted: myProject/Assets/App/GameData/ER/UI/TR.meta
modified: myProject/Assets/App/GameData/Re/Ba/Te/ba.png.meta
deleted: myProject/Assets/App/GameData/Re/UI/Su.meta
modified: myProject/Assets/App/Scenes/Ga/Co.unity

※適当に伏せ字にしています


解決策:個人ignoreファイルをワンライナーで作成する

以下を丸っとbash_profileに登録しています。

# ==== 以下独自git ====

# 【Original Git Ignore】 操作しないゴミファイルを登録する(個人ignore)
alias ogi='git diff --name-only > gitTemp; cat gitTemp'

# 【Original Git Diff】 ゴミ以外のファイルの差分を全て表示する
alias ogd='git diff --name-only | grep -vf gitTemp | xargs git diff'

# 【Original Git Diff --Name-only】 ゴミ以外の差分のファイル名を表示する
alias ogdn='git diff --name-only | grep -vf gitTemp'

# 【Original Git Add】 ゴミ以外の差分を全て追加する
alias oga='git diff --name-only | grep -vf gitTemp | xargs git add; git status -uno'

# ==== 独自git 終了 ====


解説


Unity起動時

# 【Original Git Ignore】 操作しないゴミファイルを登録する(個人ignore)

alias ogi='git diff --name-only > gitTemp; cat gitTemp'

作業を行う前に「ogi」を実行します。

現状のdiffをgitTempファイルに書き込みます。

gitTempに書き込まれたパスは以降の操作の対象外となります。


diff確認時

# 【Original Git Diff】 ゴミ以外のファイルの差分を全て表示する

alias ogd='git diff --name-only | grep -vf gitTemp | xargs git diff'

# 【Original Git Diff --Name-only】 ゴミ以外の差分のファイル名を表示する
alias ogdn='git diff --name-only | grep -vf gitTemp'

「ogd」とするとgitTempに含まれないパスの「git diff」が表示されます。

「ogdn」とするとgitTempに含まれないパスの「git diff --name-only」が表示されます。

自分の変更分だけが表示されます。


add時

# 【Original Git Add】 ゴミ以外の差分を全て追加する

alias oga='git diff --name-only | grep -vf gitTemp | xargs git add; git status -uno'

diffに問題がなければ「oga」を実行します。

「ogd」「ogdn」で確認したファイルが「git add」されます。

あとはいつも通りcommit & pushします。


ゴミファイルと自分の変更ファイルが混在したら

vi gitTemp

でパスを削除したり、追加したりします。


改善点


  • 新規ファイルの「git add」は手動のままなので一緒に管理したい