Este guia assume que o seguinte software está instalado num sistema Windows 10:
Alguns detalhes poderão ser ligeiramente diferentes em Mac e Linux.
Confirmar as seguintes definições em cada novo projeto no Unity (em princípio são as definições por omissão):
- Edit → Project Settings → Version Control
- Mode → Visible Meta Files
- Edit → Project Settings → Editor
- Asset Serialization, Mode → Force Text
- Edit → Project Settings → Player
- API Compatibility Level → .NET Standard 2.1
Colocar na pasta raiz do projeto Unity os seguintes ficheiros:
.gitignore
- Indica ficheiros temporários a ignorar, ou seja, que não serão guardados no repositório..gitattributes
- Entre outras coisas, indica ficheiros a guardar em modo Git LFS, nomeadamente ficheiros binários (imagens, sons, texturas, vídeos, etc).
A forma mais simples de o fazer é abrir cada um dos links no browser e
fazer CTRL+S para salvar cada um dos ficheiros. Os ficheiros devem ser
guardados na pasta raiz do projeto Unity e devem ter exatamente os nomes
.gitignore
e .gitattributes
.
Abrir Git Bash na pasta do projeto (ou fazer cd
até à pasta do projeto), e
inicializar o repositório Git com o seguinte comando:
git init
Inicializar Git LFS para o repositório criado:
git lfs install
Na pasta do projeto editar ficheiro config
na pasta .git
e colocar o
seguinte no fim do mesmo (confirma que o caminho completo até à ferramenta
UnityYAMLMerge
está correto - nota que são necessário duas barras entre
cada pasta):
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = 'C:\\Program Files\\Unity\\Hub\\Editor\\2018.3.0f2\\Editor\\Data\\Tools\\UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
[mergetool]
keepBackup = false
Se a instalação do Unity onde se encontra a ferramenta UnityYAMLMerge
for
removida, é necessário atualizar o ficheiro .git\config
para procurar a
ferramenta na nova instalação do Unity.
A mesma pasta que contém a ferramenta UnityYAMLMerge
contém também o seu
ficheiro de configuração, de nome mergespecfile.txt
. Abrir este ficheiro com
o Notepad++ e substituir as linhas:
unity use "%programs%\YouFallbackMergeToolForScenesHere.exe" "%l" "%r" "%b" "%d"
prefab use "%programs%\YouFallbackMergeToolForPrefabsHere.exe" "%l" "%r" "%b" "%d"
por
unity use "%programs%/KDiff3/kdiff3.exe" "%b" "%l" "%r" -o "%d"
prefab use "%programs%/KDiff3/kdiff3.exe" "%b" "%l" "%r" -o "%d"
* use "%programs%/KDiff3/kdiff3.exe" "%b" "%l" "%r" -o "%d"
São necessárias permissões de administrador para alterar o ficheiro. Ao guardar o ficheiro o Notepad++ pergunta se queres abrir o mesmo com permissões de administrador. Confirma, volta a inserir as modificações e guarda o ficheiro.
Se a instalação do Unity onde se encontra o ficheiro mergespecfile.txt
for
removida, é necessário modificar o ficheiro mergespecfile.txt
da nova
instalação do Unity de igual forma.
Por exemplo, se estivermos no ramo master
e quisermos fazer merge do ramo
new-boss
, vamos executar o seguinte comando git merge new-boss
. Se
existirem conflitos que o Git não conseguir resolver, o resultado vai ser algo
do género:
Auto-merging Assets/Scenes/MyScene.unity
CONFLICT (content): Merge conflict in Assets/Scenes/MyScene.unity
Automatic merge failed; fix conflicts and then commit the result.
Para resolver os conflitos, vamos invocar a ferramenta configurada para o
efeito com o comando git mergetool
. A maioria dos conflitos é resolvida
automaticamente. No caso dos conflitos não resolvidos será aberta uma janela do
KDiff3, tendo o utilizador apenas de especificar, para cada conflito, se quer
utilizar as modificações do ramo master
ou do ramo new-boss
, e guardar
essas escolhas. Os conflitos são marcados como resolvidos e basta fazer
git commit
para finalizar o merge.
Por omissão o Git usa o editor Vim para as mensagens de commit. No entanto, é muito mais prático usar um editor como o Notepad++. O seguinte comando configura o Git para usar o Notepad++ nas mensagens de commit (assume-se que o Notepad++ está instalado na pasta indicada, caso contrário alterar em conformidade):
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Uma vez que é especificada a opção --global
, basta executar este comando uma
vez para que o Notepad++ fique configurado para todos os repositórios Git de um
dado utilizador no mesmo PC.