Вы можете использовать что-то как этот PHP Git интерфейс , чтобы переключить ветку, но вам, вероятно, потребуется отправить следующий HTTP-запрос для активов после небольшой задержки, чтобы позволить вашему серверу (например, nginx), чтобы увидеть изменения.
require_once('Git.php');
$repo = Git::open('.');
$repo->checkout('some-branch-name');
Если вы продвигаетесь вперед с таким подходом, избегайте передачи пользовательского ввода непосредственно в команды здесь. Я бы порекомендовал карту между параметром URL и предварительно определенными строками, представляющими каждую из ваших ветвей.