Índice da documentação

// Documentação do Singularity

Sincronizar vários repositórios: fetch, pull, push e push rejeitado

A vista Git do Navigator mostra o ramo e a diferença em relação ao remoto de cada projeto do workspace. Faz fetch, pull e push sem mudar de separador, e deixa o Singularity guiar a recuperação quando um push é rejeitado.

Todos os repositórios do workspace num relance

No Navigator, muda para a vista Git: cada projeto do workspace mostra o seu ramo atual e os contadores ↑ (commits locais por publicar) e ↓ (commits remotos por integrar). Um ícone de alerta assinala um repositório que requer a tua atenção.

Expande um projeto para ver os ficheiros não preparados, não monitorizados e preparados, os stashes e os worktrees, e faz commit a partir do compositor no fundo do painel. Um fetch automático em segundo plano mantém os contadores atualizados.

Vista Git do Navigator a listar quatro projetos com o respetivo ramo, os contadores ahead/behind e as ações Fetch, Pull e Push ao passar o rato
Cada projeto mostra o seu ramo e a sua diferença; as ações aparecem ao passar o rato.

Fetch, Pull e Push ao passar o rato

Passa o rato sobre um projeto para mostrar as suas ações: Fetch descarrega as referências remotas sem tocar nos teus ficheiros, Pull integra o ramo upstream — por merge ou por rebase, consoante a divergência — e Push publica os teus commits. O menu … reúne as restantes ações do repositório.

Assim, sincronizas vários repositórios seguidos sem abrir o respetivo cockpit. Uma notificação confirma cada operação, por exemplo «Pushed to origin – 4 commits». Para o detalhe do cockpit, consulta sincronizar com o remoto.

Quando o push é rejeitado

Se o ramo remoto tiver avançado, o Git recusa o push. O Singularity abre o diálogo Push rejected — “main” is behind the remote e propõe três opções:

  • Pull first integra as alterações remotas localmente para que as verifiques antes de um novo envio. É a opção segura.
  • Force push substitui o ramo remoto pelo teu histórico local com --force-with-lease.
  • Cancel deixa os dois ramos inalterados.

Se a recuperação também falhar, o Singularity propõe um ticket de correção. Nos workflows GitHub, também consegue reparar uma configuração SSH avariada.

Diálogo Push rejected do Singularity com os botões Cancel, Force push e Pull first
O diálogo explica a diferença e propõe fazer pull antes do push.

Com agentes em paralelo

Os agentes trabalham nos seus próprios worktrees e a fila de commits integra o seu trabalho um ticket de cada vez, por rebase, sem commit de merge. O teu ramo principal pode, portanto, avançar enquanto trabalhas: faz um Fetch antes do push e prefere Pull first a um push forçado num ramo partilhado.

Perguntas frequentes

Porque é que o meu push é rejeitado?

O repositório remoto contém commits que não existem no teu ramo local: alguém — ou um agente — fez push entretanto. Escolhe Pull first para integrar esses commits, verificar e voltar a fazer push.

Forçar o push apaga o trabalho dos outros?

Substitui o ramo remoto pelo teu histórico local com --force-with-lease, que recusa o envio se o ramo remoto tiver mudado desde o teu último fetch. Os commits remotos que não obtiveste ficam portanto protegidos, mas os que substituis conscientemente desaparecem do ramo.