Como Criar e Alternar para uma Nova Branch no Git Usando git switch -c (Executando via PHP)

Como Criar e Alternar para uma Nova Branch no Git Usando git switch -c (Executando via PHP)

Em versões modernas do Git, a criação e a troca para uma nova branch foram simplificadas através do comando git switch -c, substituindo o antigo git checkout -b. Executar essa instrução através do PHP permite automatizar pipelines de deploy, rotinas de CI/CD e a gestão programática de repositórios diretamente no servidor web.

PHP

<?php

/**
 * Cria e alterna para uma nova branch no Git utilizando 'git switch -c'.
 *
 * @param string $branchName Nome da nova branch a ser criada.
 * @param string $repoPath Caminho absoluto para o diretório do repositório Git.
 * @return array Retorno contendo status da execução, saída do comando e erros.
 */
function createAndSwitchBranch(string $branchName, string $repoPath): array
{
    // Sanitiza o nome da branch para evitar execução de comandos indevidos
    $safeBranchName = escapeshellarg($branchName);
    
    // Altera o diretório de trabalho para o repositório Git especificado
    $command = "cd " . escapeshellarg($repoPath) . " && git switch -c {$safeBranchName} 2>&1";

    // Executa o comando no terminal do sistema operacional
    $output = [];
    $resultCode = 0;
    exec($command, $output, $resultCode);

    return [
        'success' => $resultCode === 0,
        'code'    => $resultCode,
        'message' => implode(PHP_EOL, $output)
    ];
}

// --- Exemplo de Uso Prático ---

$repoDirectory = '/var/www/meu-projeto'; // Caminho do repositório no servidor
$newBranchName = 'feature/autenticacao-jwt';

$result = createAndSwitchBranch($newBranchName, $repoDirectory);

if ($result['success']) {
    echo "Sucesso: Branch criada e ativa com êxito!" . PHP_EOL;
    echo "Detalhes: " . $result['message'] . PHP_EOL;
} else {
    echo "Erro ao alternar branch (Código {$result['code']}):" . PHP_EOL;
    echo $result['message'] . PHP_EOL;
}
  • Comando Moderno (git switch -c): O parâmetro -c (curto para --create) instrui o Git a criar a branch e migrar para ela instantaneamente. Substitui o comando legado git checkout -b com uma sintaxe mais clara e focada exclusivamente na gestão de branches.
  • Redirecionamento de Erros (2>&1): Como o Git envia confirmações de troca de branch para o stderr (fluxo de erro padrão), o operador 2>&1 é essencial no comando para redirecionar essa saída para o stdout, permitindo que o exec() do PHP capture a resposta completa.
  • Segurança na Execução (escapeshellarg): O uso da função nativa escapeshellarg() no PHP previne vulnerabilidades graves de Command Injection, impedindo que caracteres especiais no nome da branch executem instruções arbitrárias no SO.
  • Requisito de Versão do Git: O comando git switch está disponível a partir do Git 2.23+. Certifique-se de que a versão instalada no ambiente de execução do PHP atenda a esse requisito mínimo.
  • Permissões do Usuário Web: O processo que executa o script (ex: www-data no Linux ou SYSTEM no IIS) precisa ter permissão de escrita na pasta .git do repositório para criar as referências da nova branch.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *