Power BI + Git + GitHub Guia de versionamento de projetos PBIP
Guia educacional e corporativo

Versionando projetos Power BI com Git, GitHub e VS Code

Um caminho completo, do primeiro git --version até o Pull Request aprovado pelo time. Escrito para analistas de dados e desenvolvedores Power BI que estão começando com Git.

Power BI PBIP Git GitHub VS Code ~30 min de leitura 14 capítulos
Fluxo do projeto: Power BI Desktop gera o PBIP, VS Code edita, Git versiona, GitHub compartilha com a equipe
O caminho que você vai percorrer neste guia: o projeto nasce no Power BI Desktop, é editado no VS Code, versionado pelo Git, compartilhado no GitHub e revisado pela equipe.
Capítulo 1

As quatro ferramentas

Quatro ferramentas independentes que, juntas, resolvem o problema mais comum de qualquer equipe de BI: saber qual é a versão certa do relatório.

Git

Controle de versão que roda na sua máquina. Tira uma fotografia — o commit — do projeto a cada mudança e registra quem alterou, o que alterou e por quê. É um programa de linha de comando e funciona sem internet.

Site oficial do Git

GitHub

A nuvem onde os repositórios vivem. O Git cuida do histórico local; o GitHub hospeda esse histórico para o time inteiro acessar o mesmo projeto, com Pull Requests e revisão de código.

Acessar o GitHub

VS Code

Editor gratuito da Microsoft. Nele você abre a pasta do projeto PBIP, vê exatamente o que mudou e executa os comandos Git no terminal integrado — tudo numa única janela.

Baixar o VS Code

Power BI PBIP

O formato de projeto do Power BI Desktop. Em vez de um arquivo binário fechado, salva o relatório e o modelo semântico como uma pasta de arquivos de texto (JSON e TMDL). É a peça que torna tudo possível: texto é o que o Git sabe versionar.

Documentação do PBIP

PBIX ou PBIP

A distinção mais importante do guia. Os dois formatos abrem no Power BI Desktop e geram o mesmo relatório, mas só o PBIP funciona com controle de versão.

Comparação entre PBIX, arquivo binário único, e PBIP, pasta com arquivos JSON e TMDL legíveis
À esquerda o PBIX, uma caixa fechada. À direita o PBIP, a mesma informação em arquivos de texto que podem ser comparados linha a linha.
Característica.PBIX.PBIP
FormatoArquivo único binárioPasta com arquivos de texto (JSON e TMDL)
O Git compara mudanças?Não — só sabe dizer que o arquivo mudouSim — mostra linha a linha
Dois analistas ao mesmo tempoUm sobrescreve o outroCada um numa branch, merge no fim
Melhor usoDistribuir e arquivarTrabalho em equipe e versionamento
O PBIP não substitui o PBIX no dia a dia

Você continua abrindo o projeto no Power BI Desktop e publicando no Serviço normalmente. Muda apenas como o projeto é gravado em disco.

Capítulo 2

Instalação e configuração inicial

Seis passos, uma vez por máquina.

  1. Criar a conta no GitHub

    Em github.com/signup, use o e-mail corporativo. O nome de usuário aparece em todos os commits e Pull Requests, então escolha algo profissional.

    Tela de criação de conta no GitHub com campos de usuário, e-mail e senha
    Cadastro do GitHub.
  2. Configurar a autenticação

    O GitHub não aceita senha na linha de comando. O Git Credential Manager já vem com o instalador do Git para Windows: no primeiro git push abre uma janela do navegador, você entra na conta e as credenciais ficam salvas. A alternativa é gerar um Personal Access Token com escopo repo e usá-lo no lugar da senha.

    Ative a autenticação em dois fatores

    Obrigatória em muitas organizações. Configure em Settings → Password and authentication.

  3. Instalar o Git

    Baixe em git-scm.com/downloads. Os padrões servem para quase tudo, mas confirme a tela do PATH.

    Instalador do Git para Windows na tela de ajuste da variável PATH, com a opção recomendada destacada
    Escolha "Git from the command line and also from 3rd-party software" para o VS Code e o PowerShell reconhecerem o Git.
  4. Instalar o VS Code

    Baixe em code.visualstudio.com e marque "Adicionar ao menu de contexto do Explorer", que permite abrir qualquer pasta no editor com o botão direito.

  5. Instalar o Power BI Desktop

    Prefira a versão da Microsoft Store, que se atualiza sozinha. Depois habilite o formato em Arquivo → Opções e configurações → Opções → Recursos de Versão Preliminar → Power BI Project (.pbip) save option e reinicie o programa.

    Sem essa opção marcada, o PBIP não aparece

    Se "Power BI project files (*.pbip)" não estiver na lista de tipos ao salvar, o recurso não foi habilitado ou o Desktop não foi reiniciado.

  6. Instalar as extensões recomendadas

    No VS Code, Ctrl+Shift+X e instale:

    GitHub Pull Requests

    Cria, revisa e aprova Pull Requests dentro do editor.

    GitHub Copilot

    Sugere código DAX/M e escreve mensagens de commit.

    Power BI / TMDL

    Realce de sintaxe para os arquivos .tmdl do modelo.

    Material Icon Theme

    Ícones por tipo de arquivo, para não se perder na árvore do PBIP.

    Painel de extensões do VS Code com GitHub Pull Requests, GitHub Copilot, Power BI TMDL e Material Icon Theme
    Painel de extensões (Ctrl+Shift+X).

Verificando a instalação

No PowerShell ou no terminal do VS Code (Ctrl+'), um número de versão confirma que está tudo certo.

PowerShell — verificar versão
PS C:\> git --version
git version 2.47.0.windows.1
"git não é reconhecido como um comando"

O Git não entrou no PATH. Feche todos os terminais e o VS Code, abra de novo e teste. Se persistir, reinstale marcando a opção de PATH recomendada.

Configuração inicial obrigatória

O Git precisa saber quem você é para assinar os commits. Roda uma única vez por computador: a flag --global vale para todos os projetos.

PowerShell — identidade do autor
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
git config --list

Vale padronizar outros três comportamentos que evitam dor de cabeça em equipe:

PowerShell — configurações recomendadas
# branch principal chamada "main" em todo projeto novo
git config --global init.defaultBranch main

# VS Code como editor padrão de mensagens e conflitos
git config --global core.editor "code --wait"

# evita o aviso de divergência no git pull
git config --global pull.rebase false
Terminal PowerShell mostrando a saída de git --version, git config --global e git config --list
O git config --list confirma nome, e-mail e branch padrão.
Capítulo 3

Transformando um PBIP em projeto versionado

Quatro passos: abrir no VS Code, inicializar o Git, criar o .gitignore e fazer o primeiro commit.

O que é, na prática, um projeto PBIP

Ao salvar como .pbip, o Power BI Desktop não grava um arquivo: grava uma pasta, com o relatório e o modelo semântico separados, em texto puro.

Power BI Desktop com a caixa Salvar como e o tipo Power BI project files pbip selecionado
Arquivo → Salvar como e escolha Power BI project files (*.pbip).

Estrutura de pastas do projeto

Esta é a árvore que o Git vai versionar:

Vendas-LATAM/ │ ├── Vendas.pbip # abra ESTE arquivo no Power BI ├── Vendas.Report/ │ ├── definition/ │ │ ├── report.json # tema, filtros, configurações │ │ └── pages/pages.json # páginas e visuais │ └── .platform │ ├── Vendas.SemanticModel/ │ ├── definition/ │ │ ├── model.tmdl # modelo, culture, anotações │ │ ├── tables/Vendas.tmdl # colunas e medidas DAX │ │ └── tables/Calendario.tmdl │ └── diagramLayout.json │ ├── .gitignore └── README.md
Explorador do VS Code mostrando a estrutura de um projeto PBIP com pastas Report e SemanticModel
A mesma estrutura no explorador do VS Code.

Passo a passo

  1. Abrir a pasta no VS Code

    Abra a pasta raiz, a que contém o .pbip — não uma subpasta.

    PowerShell — pelo terminal
    cd "C:\Projetos\Vendas-LATAM"
    code .
  2. Inicializar o repositório

    No terminal integrado (Ctrl+'), o comando cria a subpasta oculta .git, onde todo o histórico fica guardado.

    PowerShell — inicializar
    PS ~\Vendas-LATAM> git init
    Initialized empty Git repository in C:/Projetos/Vendas-LATAM/.git/
    Nunca apague a pasta .git

    Ela é o repositório. Apagá-la remove todo o histórico local de uma vez.

  3. Criar o .gitignore

    Cache e credenciais não devem ir para o repositório. Crie o arquivo na raiz com este conteúdo:

    .gitignore
    # --- Power BI ---------------------------------------
    # cache local do modelo (pesado e específico da máquina)
    .pbi/localSettings.json
    .pbi/cache.abf
    **/.pbi/localSettings.json
    **/.pbi/cache.abf
    
    # não versione o binário junto do projeto
    *.pbix
    
    # --- Credenciais e dados ----------------------------
    *.env
    credenciais*
    *.xlsx
    *.csv
    
    # --- Sistema operacional ----------------------------
    Thumbs.db
    desktop.ini
    .DS_Store
    
    # --- Temporários ------------------------------------
    ~$*
    *.tmp
    Gere o arquivo automaticamente

    O gitignore.io monta o arquivo a partir das suas tecnologias. Combine o resultado com as regras de Power BI acima.

  4. Primeiro commit

    git add . coloca as alterações na área de preparo e git commit grava a fotografia no histórico.

    PowerShell — primeiro commit
    git add .
    git commit -m "Primeiro commit"
    [main (root-commit) a1b2c3d] Primeiro commit
     24 files changed, 1843 insertions(+)
Capítulo 4

Criando o repositório no GitHub

O histórico já existe na sua máquina. Agora ele precisa de um endereço na nuvem para a equipe acessar o mesmo projeto.

Tela github.com/new com nome do repositório, opção privada marcada e botão Create repository
Tela github.com/new. Para projetos corporativos, escolha Private.

Nome

Minúsculas, sem acentos, com hífens: vendas-latam-pbip. Ele entra na URL e é difícil de mudar depois.

Privado

Só quem você convidar acessa. É a escolha certa para dados e regras de negócio da empresa.

Público

Visível para a internet inteira. Use apenas em estudo, demonstração ou open source.

Público significa público de verdade

Um repositório público expõe medidas DAX, nomes de tabelas, strings de conexão e qualquer credencial esquecida num arquivo. Em ambiente corporativo, sempre privado.

Vale preencher o README.md, que o GitHub exibe na página do repositório: o que o relatório mostra, quais são as fontes de dados, qual .pbip abrir e quem aprova os Pull Requests.

Conectando o repositório remoto

Depois de criar, o GitHub mostra a URL na caixa Quick setup. O origin é apenas um apelido para ela — a convenção universal para "o repositório principal na nuvem".

PowerShell — conectar o remoto
# HTTPS: recomendado para começar, usa o Credential Manager
git remote add origin https://github.com/bi-latam/vendas-latam-pbip.git
git remote -v

# SSH: exige cadastrar uma chave, mas não pede senha
# git@github.com:bi-latam/vendas-latam-pbip.git

O primeiro push

A flag -u vincula a branch local main à origin/main. Depois disso, um simples git push já sabe para onde enviar.

PowerShell — primeiro push
# garante que a branch local se chama main
git branch -M main

git push -u origin main
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.
Erro "Updates were rejected"?

Acontece quando você marcou "Add a README" ao criar o repositório: o remoto tem um commit que você não possui. Traga esse commit antes de empurrar os seus com git pull origin main --allow-unrelated-histories.

Capítulo 5

Clone e sincronização

git clone baixa o projeto e todo o histórico para uma máquina nova. É uma operação de primeira vez.

Novo integrante na equipe

Carla entrou no time hoje e não tem nada da pasta do projeto. Depois de receber acesso ao repositório, três comandos resolvem:

PowerShell — primeira máquina
# 1. vá para a pasta onde os projetos ficam
cd "C:\Projetos"

# 2. clone: cria a pasta já com o .git dentro
git clone https://github.com/bi-latam/vendas-latam-pbip.git

# 3. entre e abra no VS Code
cd vendas-latam-pbip
code .

Carla agora tem os arquivos, o histórico completo e o origin configurado.

Quem já tem o projeto não clona de novo

Esta é a confusão mais frequente de quem está começando: clone não é atualizar. Clonar cria uma segunda pasta independente, e aí você edita a errada, perde commits locais que ainda não subiram e não vê as branches em andamento. Quem já tem o projeto usa git pull, que traz apenas o que mudou.

PowerShell — atualizar quem já tem o projeto
# ver em que branch você está e se há algo pendente
git status

# trazer as novidades do remoto para a branch atual
git pull

# só consultar o que mudou, sem alterar seus arquivos
git fetch
Fluxograma: GitHub, git clone, computador local; ao lado, quando usar clone e quando usar pull
A regra prática: clone uma vez, pull todos os dias.

Alternativa visual: GitHub Desktop

Se a linha de comando ainda intimida, o GitHub Desktop faz clone, commit, pull e push por botões, executando os mesmos comandos por baixo.

GitHub Desktop mostrando arquivos alterados do projeto PBIP e o diff de uma medida DAX no arquivo TMDL
Com o diff de um .tmdl, dá para revisar uma medida DAX antes de commitar.
Capítulo 6

Workflow completo de desenvolvimento

O ciclo que você vai repetir todos os dias, sempre na mesma ordem.

1. Criar branch

git checkout -b

Isola sua tarefa do resto do time

2. Alterar

Power BI Desktop

Edite, salve e feche o projeto

3. Verificar

git status

Confira o que mudou antes de gravar

4. Adicionar

git add .

Prepara os arquivos para o commit

5. Commitar

git commit -m

Grava a fotografia no histórico

6. Enviar

git push origin

Publica a branch no GitHub

1. Criar a branch

Nunca trabalhe direto na main, e parta sempre de uma base atualizada.

PowerShell — nova branch
git checkout develop
git pull origin develop
git checkout -b feature/novo-kpi

2. Alterar no Power BI Desktop

Crie a medida, ajuste o visual, salve (Ctrl+S) e feche o Desktop. Fechar importa: arquivos abertos podem gerar alterações "fantasmas".

3. Verificar o status

O comando que você vai digitar mais vezes na vida. Ele responde em que branch você está e o que mudou.

PowerShell — status
PS ~\Vendas-LATAM> git status
On branch feature/novo-kpi
Changes not staged for commit:
  modified:   Vendas.SemanticModel/definition/tables/Vendas.tmdl
  modified:   Vendas.Report/definition/pages/pages.json

4. Adicionar e commitar

Prefira a mensagem com prefixo: fica muito mais fácil ler o histórico depois.

PowerShell — staging e commit
# tudo o que mudou, ou um arquivo específico
git add .

git commit -m "feat: criação do KPI LATAM" -m "Medida DIVIDE(Receita, Meta) e card na página Visão Geral."

5. Enviar para o GitHub

PowerShell — push
git push origin feature/novo-kpi
Terminal com a sequência completa: git checkout -b, git status, git add, git commit e git push com o link do Pull Request
O ciclo completo em um terminal. Na última linha, o GitHub já devolve o link para abrir o Pull Request.
Capítulo 7

Branches: trabalhando em paralelo sem colisão

Uma branch é uma linha de trabalho independente: você experimenta, quebra e refaz sem afetar o relatório que está em produção.

main

A versão oficial. Só recebe código aprovado, sempre via Pull Request. Deve ser protegida no GitHub.

develop

A integração do time. Reúne as features concluídas para teste conjunto. É a base de onde nascem as features.

feature/*

Uma tarefa, uma branch. Nasce de develop e volta para ela. Exemplo: feature/kpi-margem.

hotfix/*

Correção urgente em produção. Nasce da main e volta para main e develop.

release/*

Preparação da entrega. Congela o escopo para ajustes finais. Exemplo: release/2026.09.

Time pequeno?

Use só main + feature/*. Adicione develop e release quando houver homologação formal.

Diagrama de commits mostrando main, develop, duas features, um release e um hotfix com suas junções
Cada feature nasce de develop e volta para ela, enquanto o hotfix parte direto da main.

Comandos essenciais de branch

PowerShell — gerenciando branches
# listar branches locais (o * marca a atual) e todas, com o remoto
git branch
git branch -a

# criar e mudar, ou apenas mudar
git checkout -b feature/dashboard-latam
git checkout develop

# renomear a branch atual
git branch -m feature/nome-correto

# apagar local e no GitHub
git branch -d feature/dashboard-latam
git push origin --delete feature/dashboard-latam

Por que vale a pena

  • Isolamento: sua medida pela metade não quebra o relatório de ninguém.
  • Paralelismo real: três pessoas em três frentes, sem fila pelo arquivo.
  • Reversão barata: se a ideia não prestou, apaga-se a branch.

Boas práticas

Faça

  • Proteja a main nas configurações do repositório.
  • Uma branch por atividade, com nome no padrão tipo/descricao-curta.
  • Atualize a branch com git pull origin develop a cada dia ou dois.
  • Apague a branch depois do merge: o histórico já está preservado.

Evite

  • Nomes como teste, minha-branch ou ana.
  • Branches que vivem semanas sem sincronizar: o conflito cresce junto.
  • Um único commit gigante no fim do trabalho.
  • Commitar direto na main "porque era rápido".
Convenção de nomes
# bons nomes de branch
feature/kpi-margem-latam
fix/relacionamento-calendario
hotfix/medida-ytd-duplicando
release/2026.09

# nomes que atrapalham a equipe
teste2
ana
correcoes-finais-v3
Capítulo 8

Pull Request: pedindo para juntar o trabalho

O Pull Request (PR) é um pedido formal de merge de uma branch em outra. É onde a revisão por pares acontece — e onde o PBIP mostra seu valor.

Na prática, o PR é uma página no GitHub que reúne os commits, o diff de cada arquivo, os comentários da equipe e o botão que executa o merge. Para um projeto Power BI, isso significa que um colega consegue ler a medida DAX que você escreveu, comentar na linha específica e sugerir ajustes antes de a mudança chegar ao relatório oficial.

Fluxo do Pull Request

Feature Branchtrabalho isolado
Pushpublica a branch
Pull Requestpedido de merge
Reviewrevisão por pares
Approvalaprovação
Mergeincorporado
Feature Branch — a tarefa foi desenvolvida isoladamente, com commits pequenos. Nada disso afetou a main ainda.
Interface de Pull Request no GitHub com título, descrição, checks aprovados, revisor que aprovou e botão de merge
Um Pull Request real: branches, descrição, verificações, aprovação e o botão Merge pull request.

Como abrir o Pull Request

  1. Dê o push da sua branch

    PowerShell
    git push origin feature/novo-kpi
  2. Abra o link que o Git devolveu

    Ou vá ao repositório e clique em Compare & pull request.

  3. Confira as branches: base → compare

    base é para onde o código vai (develop); compare é de onde vem (feature/novo-kpi). Trocar as duas é o erro mais comum de quem começa.

  4. Escreva a descrição e marque revisores

    A descrição responde o que, por que e como testar. Marque pelo menos um colega em Reviewers e clique em Create pull request.

Modelo de descrição

Markdown — descrição do Pull Request
## O que muda
- Nova medida `[KPI LATAM]` = DIVIDE( [Receita], [Meta] )
- Card do KPI na página "Visão Geral"

## Por que
Demanda #38: a diretoria comercial precisa acompanhar o
atingimento de meta por país no painel de receita.

## Como testar
1. `git checkout feature/novo-kpi` e abra o `Vendas.pbip`
2. Atualize os dados e vá para a página "Visão Geral"
3. Confira o card: deve exibir 104,2% para set/2026

## Checklist
- [x] Testado no Power BI Desktop
- [x] Sem credenciais ou dados sensíveis no commit
- [ ] Validado pelo time de negócio
Crie um template de PR para o time

Salve o modelo acima em .github/pull_request_template.md. O GitHub passa a preencher a descrição de todo novo Pull Request.

Capítulo 9

Merge: juntando as linhas de trabalho

Merge traz os commits de uma branch para outra. O Git tenta fazer isso sozinho e consegue na maioria das vezes.

PowerShell — merge local
# 1. vá para a branch que vai RECEBER as alterações
git checkout develop

# 2. garanta que ela está atualizada
git pull origin develop

# 3. traga a branch de origem
git merge feature/novo-kpi
O sentido do merge importa

Você entra na branch de destino e pede o merge da branch de origem. Estar na feature e rodar git merge develop faz o contrário — o que também é útil, para atualizar sua branch.

Três diagramas comparando fast-forward, merge commit e merge conflict
Os três resultados possíveis de um git merge.

Fast-forward

Acontece quando a branch de destino não recebeu commits novos desde que a feature nasceu: o Git só move o ponteiro para a frente e o histórico fica linear. Para registrar explicitamente a integração, force um commit de merge com git merge --no-ff feature/novo-kpi.

Merge commit

O caso mais comum em equipe: as duas branches avançaram, mas em arquivos ou linhas diferentes. O Git junta tudo automaticamente e cria um commit com dois pais, preservando as duas histórias.

Merge conflict

O Git para quando as duas branches alteraram a mesma linha do mesmo arquivo. Nada é perdido nem sobrescrito: a decisão fica com você, e o próximo capítulo mostra como resolver.

Saída típica
Auto-merging Vendas.SemanticModel/definition/tables/Vendas.tmdl
CONFLICT (content): Merge conflict in Vendas.SemanticModel/definition/tables/Vendas.tmdl
Automatic merge failed; fix conflicts and then commit the result.

Qual estratégia usar no botão do GitHub

OpçãoO que fazQuando usar
Create a merge commit Mantém os commits da branch e adiciona um commit de junção. Padrão recomendado: preserva o rastro de quem fez o quê.
Squash and merge Comprime todos os commits da branch em um só. Quando a branch tem muitos commits de ajuste.
Rebase and merge Reaplica os commits no topo da base, sem commit de junção. Histórico linear, mas reescreve hashes: evite com time iniciante.
Feche o Power BI Desktop antes de qualquer merge

Com o projeto aberto, o Desktop pode reescrever arquivos durante a operação e deixar tudo em estado inconsistente. Depois do merge, abra o .pbip e confira o relatório.

Capítulo 10

Resolução de conflitos

Conflito não é erro nem defeito: é o Git avisando que duas pessoas tiveram ideias diferentes sobre a mesma linha. Resolver é escolher — e testar.

Como o conflito aparece

Ana e Bruno editaram a mesma medida [KPI LATAM] no Vendas.tmdl, cada um na sua branch.

PowerShell — o conflito aparece
PS> git pull origin develop
Auto-merging Vendas.SemanticModel/definition/tables/Vendas.tmdl
CONFLICT (content): Merge conflict in .../tables/Vendas.tmdl
Automatic merge failed; fix conflicts and then commit the result.

# ver quais arquivos precisam de decisão
PS> git status
  both modified:   Vendas.SemanticModel/definition/tables/Vendas.tmdl

Entendendo os marcadores

O Git escreve as duas versões dentro do arquivo. Entre <<<<<<< HEAD e ======= fica a sua versão; entre ======= e >>>>>>>, a que está chegando da outra branch. Os marcadores não são código: são sinalização temporária que você precisa remover.

Vendas.tmdl — com marcadores de conflito
    measure 'Receita' = SUM( Vendas[Valor] )

<<<<<<< HEAD
    measure 'KPI LATAM' =
        DIVIDE( [Receita], [Meta] )
        formatString: 0.0%
=======
    measure 'KPI LATAM' =
        DIVIDE( [Receita YTD], [Meta YTD] )
        formatString: 0.00%
>>>>>>> develop

Como resolver

O VS Code detecta os marcadores e oferece botões no topo do arquivo:

Accept Current

Mantém a sua versão.

Accept Incoming

Mantém a versão do colega.

Accept Both

Fica com as duas. Pode duplicar medidas no TMDL.

Editar à mão

O mais comum em DAX: combinar as duas na versão correta.

VS Code mostrando um conflito de merge no arquivo Vendas.tmdl com os marcadores HEAD e develop destacados em verde e azul
Em verde a sua versão, em azul a que está chegando, e os botões de resolução no topo do editor.
  1. Converse antes de escolher

    No exemplo, a versão correta era uma terceira: [Receita YTD] com formatação de uma casa decimal. Um conflito quase sempre revela divergência de entendimento, não um problema técnico.

  2. Edite o arquivo e remova todos os marcadores

    Vendas.tmdl — resolvido
        measure 'KPI LATAM' =
            DIVIDE( [Receita YTD], [Meta YTD] )
            formatString: 0.0%
            description: Atingimento de meta acumulado no ano.
    Marcador esquecido = projeto corrompido

    Se sobrar um <<<<<<< no TMDL ou no JSON, o Power BI Desktop se recusa a abrir o projeto. Busque por <<< antes de commitar.

  3. Teste antes do merge

    Arquivo resolvido não significa relatório funcionando. Abra o projeto e valide:

    • O .pbip abre e o modelo atualiza sem erro de DAX.
    • A medida devolve o número esperado, conferido contra uma fonte conhecida.
    • Nenhuma medida ficou duplicada, efeito colateral do "Accept Both".
  4. Marque como resolvido e conclua

    PowerShell — finalizar
    # sinaliza ao Git que o arquivo está resolvido
    git add Vendas.SemanticModel/definition/tables/Vendas.tmdl
    git commit -m "merge: resolve conflito na medida KPI LATAM"
    git push origin feature/novo-kpi

Quando quiser voltar atrás

PowerShell — abortar com segurança
# cancela o merge e volta tudo ao estado anterior
git merge --abort

# lista apenas os arquivos em conflito
git diff --diff-filter=U
A melhor forma de resolver conflito é preveni-lo

Divida as tarefas por área do projeto, faça git pull todos os dias e mantenha as branches curtas. Conflito de duas semanas é sempre mais difícil que conflito de duas horas.

Capítulo 11

Colaboração entre desenvolvedores

Um cenário real: dois analistas, um projeto, uma semana de trabalho. Ana cuida do modelo semântico; Bruno cuida dos visuais.

Fluxograma completo com as colunas Analista A, Analista B e GitHub, mostrando clone, branches, commits, push, Pull Requests e merges
Cada analista na sua branch, com encontro apenas no Pull Request.

O cenário, passo a passo

  1. Cada um clona e cria a sua branch

    O clone é uma vez por máquina; a branch nasce sempre de uma develop atualizada.

    Ana e Bruno — cada um na sua máquina
    git clone https://github.com/bi-latam/vendas-latam-pbip.git
    cd vendas-latam-pbip
    git checkout develop
    git pull origin develop
    
    # Ana
    git checkout -b feature/kpi-margem
    
    # Bruno
    git checkout -b feature/pagina-comparativo
  2. Commitam ao longo do dia e dão push

    Commits pequenos, um por ideia concluída. Não espere o fim da semana.

    Ana — durante o trabalho
    git add .
    git commit -m "feat: medida de margem bruta por país"
    git push origin feature/kpi-margem
  3. Criam os Pull Requests e revisam um ao outro

    Ana abre PR de feature/kpi-margem para develop e coloca Bruno como revisor; Bruno faz o mesmo com a branch dele. Revisão cruzada: cada um olha o trabalho do outro.

  4. Merge para develop e depois para main

    Aprovados, os dois PRs entram em develop. O primeiro merge costuma ser fast-forward e o segundo gera um merge commit, o que é esperado. Depois que a develop é validada pelo negócio, abre-se um PR dela para a main, que passa a ser a versão oficial.

Os comandos de sincronização

ComandoO que fazAltera seus arquivos?
git fetch Consulta o remoto e baixa as informações sobre commits e branches novas. Não. É a forma segura de espiar antes de integrar.
git pull Faz fetch e já integra na sua branch atual. Sim. Feche o Power BI Desktop antes.
git push Envia seus commits locais para o repositório remoto. Altera o remoto, não o seu local.
PowerShell — rotina de sincronização
# === TODA MANHÃ, antes de abrir o Power BI ===
git status
git pull origin develop

# === A CADA DOIS DIAS, alinhe sua feature com a base ===
git checkout feature/kpi-margem
git pull origin develop

# === DEPOIS DE UM MERGE APROVADO ===
git checkout develop
git pull origin develop
git branch -d feature/kpi-margem
Combinem a divisão de trabalho antes de começar

Se Ana mexe só em *.SemanticModel/ e Bruno só em *.Report/, os conflitos praticamente desaparecem.

Capítulo 12

Boas práticas para equipes Power BI

Sete acordos simples que transformam Git de "ferramenta que atrapalha" em processo que a equipe nem percebe mais.

1. Trabalhe com PBIP

É o pré-requisito de tudo: só com PBIP existe diff, revisão e merge de verdade.

2. Toda mudança via Pull Request

Inclusive as suas. Proteja a main exigindo pelo menos uma aprovação.

3. Atualize a branch frequentemente

Um git pull origin develop a cada dois dias mantém o conflito pequeno.

4. Commits pequenos

Um commit = uma ideia concluída. "Criei a medida" e "ajustei o visual" são dois commits.

5. Escreva mensagens claras

A mensagem é para o colega de dentro de seis meses, que pode ser você mesmo.

6. Use revisão por pares

Quem revisa verifica a lógica DAX, a nomenclatura e o impacto nos visuais.

7. Sincronize antes de começar

git pull é o primeiro comando do dia, antes de abrir o Power BI Desktop.

Mensagens de commit

O padrão Conventional Commits usa um prefixo que diz a natureza da mudança, e o histórico passa a se ler como um changelog.

PrefixoQuando usar em Power BIExemplo
featNova medida, nova página, nova tabelafeat: criação do KPI LATAM
fixCorreção de cálculo, relacionamento ou filtrofix: correção da medida YTD
refactorReorganização sem mudar resultadorefactor: reorganização do modelo
docsREADME, descrições de medidas, dicionário de dadosdocs: atualização da documentação
styleCores, fontes, formatação de visuaisstyle: padronização das cores dos cards
perfOtimização de desempenho do modeloperf: remoção de colunas não utilizadas
Comparação entre mensagens de commit ruins como alteracoes e update, e boas mensagens com prefixos feat, fix, refactor, docs e style
O padrão que faz o histórico virar documentação.

Combinados adicionais

  • Feche o Power BI Desktop antes de pull, merge ou troca de branch.
  • Nunca commite credenciais nem planilhas de origem: para isso existe o .gitignore.
  • Documente as medidas no próprio modelo, no campo description: a documentação viaja com o projeto.
  • Padronize a nomenclatura de tabelas, colunas e medidas antes de escalar o time.
Capítulo 13

Publicação e entrega final

O projeto foi aprovado pelo negócio. Falta o último trecho: de develop para main, e da main para o Serviço do Power BI.

Diagrama do fluxo feature para develop para main e publicação no workspace de produção do Power BI
feature → develop (homologação) → main (versão oficial) → workspace de produção. Cada seta é um Pull Request revisado.

Depois do merge final

Com o PR de develop para main aprovado, todos alinham a máquina local com a nova versão oficial — e vale marcar a entrega com uma tag.

PowerShell — alinhar e marcar a versão
git checkout main
git pull

# marca o ponto exato do que foi publicado
git tag -a v1.3 -m "Release 1.3: KPI LATAM e página comparativa"
git push origin v1.3

Três regras depois da entrega

A main é a versão oficial

Se alguém pergunta qual é o relatório certo, a resposta é sempre: o da main.

Branches concluídas podem sair

Apagar a branch não apaga os commits, que já vivem na develop e na main.

Melhoria nova, branch nova

Nunca reabra uma branch antiga. Toda demanda nasce de uma develop atualizada.

PowerShell — limpeza e próximo ciclo
# apagar a branch local e a do GitHub
git branch -d feature/novo-kpi
git push origin --delete feature/novo-kpi

# limpar referências de branches que já não existem no remoto
git fetch --prune

# === começar a próxima demanda ===
git checkout develop
git pull origin develop
git checkout -b feature/proxima-melhoria
Próximo passo: automatizar a publicação

O Microsoft Fabric permite conectar um workspace diretamente a uma branch do GitHub. O merge na main passa a atualizar o relatório em produção sem ninguém clicar em "Publicar". Veja a documentação de integração Git do Fabric.

Capítulo 14

Comandos Git mais utilizados

A referência rápida do dia a dia: treze comandos cobrem mais de 95% do trabalho em um projeto Power BI.

ComandoDescriçãoExemplo real
git init Transforma a pasta atual em repositório, criando a subpasta .git. git init
git clone Baixa um repositório remoto com todo o histórico. Uma vez por máquina. git clone https://github.com/bi-latam/vendas-latam-pbip.git
git status Mostra a branch atual e o que mudou. git status
git add Coloca as alterações na área de preparo. git add .
git commit Grava as alterações preparadas no histórico, com uma mensagem. git commit -m "feat: criação do KPI LATAM"
git push Envia os commits locais para o remoto. git push origin feature/novo-kpi
git pull Baixa e já integra as alterações do remoto na branch atual. git pull origin develop
git fetch Consulta o remoto sem alterar seus arquivos. git fetch --prune
git branch Lista, cria, renomeia ou apaga branches. git branch -a
git checkout Troca de branch, ou cria uma nova com -b. git checkout -b feature/novo-kpi
git merge Traz os commits de outra branch para a atual. git merge feature/novo-kpi
git log Exibe o histórico. Com --oneline --graph fica visual. git log --oneline --graph --all
git remote -v Mostra os endereços remotos configurados. git remote -v

Comandos de emergência

PowerShell — salvando o dia
# descartar alterações de um arquivo (CUIDADO: não tem volta)
git restore Vendas.Report/definition/report.json

# desfazer o último commit, mantendo as alterações nos arquivos
git reset --soft HEAD~1

# guardar temporariamente o que você está fazendo
git stash
git stash pop

# corrigir a mensagem do último commit (antes do push)
git commit --amend -m "feat: mensagem corrigida"

# o histórico de TUDO que você fez: o salva-vidas do Git
git reflog
Antes de rodar qualquer comando destrutivo

Copie a pasta do projeto para outro lugar. git restore, git reset --hard e git clean apagam trabalho que nunca foi commitado, e o Git não recupera o que nunca viu.

Seção extra

Recursos úteis

Documentação oficial para consultar quando este guia não for suficiente. Todos os links abrem em nova aba.

Para ir além