My Unity repo's git config as of today.
For more complex and complete alternatives, look at:
My Unity repo's git config as of today.
For more complex and complete alternatives, look at:
| ## Unity ## | |
| *.cs diff=csharp text | |
| *.cginc text | |
| *.shader text | |
| ## Special rule for binary files (and large static text file) | |
| LightingData.asset filter=lfs diff=lfs merge=lfs -text | |
| TerrainData.asset filter=lfs diff=lfs merge=lfs -text | |
| NavMesh.asset filter=lfs diff=lfs merge=lfs -text | |
| Rewired_Core.XML filter=lfs diff=lfs merge=lfs -text | |
| ## Unity YAML ## | |
| *.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 | |
| # Others | |
| *.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 | |
| *.otf 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 | |
| # Source | |
| *.spp filter=lfs diff=lfs merge=lfs -text | |
| *.sbsar filter=lfs diff=lfs merge=lfs -text | |
| *.sbs filter=lfs diff=lfs merge=lfs -text | |
| *.tbscene filter=lfs diff=lfs merge=lfs -text | |
| *.mlt filter=lfs diff=lfs merge=lfs -text | |
| *.sib filter=lfs diff=lfs merge=lfs -text | |
| *.ZPR filter=lfs diff=lfs merge=lfs -text | |
| *.painter_lock filter=lfs diff=lfs merge=lfs -text | |
| *.afdesign filter=lfs diff=lfs merge=lfs -text | |
| *.blend1 filter=lfs diff=lfs merge=lfs -text | |
| *.cfg filter=lfs diff=lfs merge=lfs -text |
| [merge] | |
| tool = unityyamlmerge | |
| [mergetool "unityyamlmerge"] | |
| trustExitCode = false | |
| cmd = '~/Downloads/Tools/UnityYAMLMerge' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED" |
| */[Ll]ibrary/ | |
| */[Tt]emp/ | |
| */[Oo]bj/ | |
| */[Bb]uild/ | |
| */[Bb]uilds/ | |
| # Autogenerated VS/MD solution and project files | |
| ExportedObj/ | |
| *.csproj | |
| *.unityproj | |
| *.sln | |
| *.suo | |
| *.tmp | |
| *.user | |
| *.userprefs | |
| *.pidb | |
| *.booproj | |
| *.svd | |
| # Unity3D generated meta files | |
| *.pidb.meta | |
| # Unity3D Generated File On Crash Reports | |
| sysinfo.txt | |
| # Builds | |
| *.apk | |
| *.unitypackage | |
| *.zip | |
| *.bin | |
| ### custom ignore list | |
| .DS_Store | |
| *.sublime-workspace | |
| */Assets/AssetStoreTools | |
| */Sirenix/Assemblies/AOT | |
| */Assets/StreamingAssets/com.unity.addressables/ | |
| */Assets/StreamingAssets/aa/ |
| #!/bin/sh | |
| # | |
| # An example hook script to verify what is about to be committed. | |
| # Called by "git commit" with no arguments. The hook should | |
| # exit with non-zero status after issuing an appropriate message if | |
| # it wants to stop the commit. | |
| # | |
| # To enable this hook, rename this file to "pre-commit". | |
| # Redirect output to stderr. | |
| exec 1>&2 | |
| FILE_SIZE_LIMIT_KB=1024 | |
| CURRENT_DIR="$(pwd)" | |
| COLOR='\033[01;33m' | |
| NOCOLOR='\033[0m' | |
| HAS_ERROR="" | |
| COUNTER=0 | |
| # generate file extension filter from gitattributes for git-lfs tracked files | |
| filter=$(cat .gitattributes | grep filter=lfs | awk '{printf "-e .%s$ ", $1}') | |
| # before git commit, check non git-lfs tracked files to limit size | |
| files=$(git diff --cached --name-only | sort | uniq | grep -v $filter) | |
| while read -r file; do | |
| if [ "$file" = "" ]; then | |
| continue | |
| fi | |
| file_path=$CURRENT_DIR/$file | |
| file_size=$(ls -l "$file_path" | awk '{print $5}') | |
| file_size_kb=$((file_size / 1024)) | |
| if [ "$file_size_kb" -ge "$FILE_SIZE_LIMIT_KB" ]; then | |
| echo "${COLOR}${file}${NOCOLOR} has size ${file_size_kb}KB, over commit limit ${FILE_SIZE_LIMIT_KB}KB." | |
| HAS_ERROR="YES" | |
| ((COUNTER++)) | |
| fi | |
| done <<< "$files" | |
| # exit with error if any non-lfs tracked files are over file size limit | |
| if [ "$HAS_ERROR" != "" ]; then | |
| echo "$COUNTER files are larger than permitted, please fix them before commit" >&2 | |
| exit 1 | |
| fi | |
| exit 0 |
Thanks for sharing you hard-won knowledge!
i already have a repo, can i replace my .gitattributes with your .gitattributes, and how to make it take effect on my exist files?
thanks for sharing, the workaround for terrain files is such a bummer lol, i wish this were easier
thanks, it helped me