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 legadogit checkout -bcom 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 operador2>&1é essencial no comando para redirecionar essa saída para o stdout, permitindo que oexec()do PHP capture a resposta completa. - Segurança na Execução (
escapeshellarg): O uso da função nativaescapeshellarg()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 switchestá 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-datano Linux ouSYSTEMno IIS) precisa ter permissão de escrita na pasta.gitdo repositório para criar as referências da nova branch.
