Организация работы через Git
Можно сделать две ветки master и devel. В девеле разработка, в мастере стабильный код, который забирается на тестовый сервер. Для уже протестированного кода перед выкладкой в продакшен делайте ветку releaseN, где N номер релиза. Отдельная ветка для релизов нужна на случай хотфиксов. Для больших фич которые которые длятся от нескольких часов до нескольких недель лучше делать отдельные ветки (хотя для 2х разработчиков это может быть не так актуально). Для мелких фич можно делать локальные ветки, а можно сразу комитить в двевел.
Ни в коем случае не делайте всего две ветки, в гите же бранчевание элементарнейшая и приятнейшая вещь.
Нужно иметь две основные ветки — stable, current. В первой стабильный билд, а в current последние вмерженные пуллреквесты до поры пока не решете что current стабилен, затем они мержатся в stable, тестируется, делается тег.
Вы вроде используете аналог гитхаба gitosis.
Выше был описан главный репозиторий, назовём его upstream.
У каждого разработчика свой репозиторий на сервере (назовём origin), он бранчуется от ветки main/current, вносит изменения (мы стараемся делать это одним коммитом, для правок --amend), когда готово пушит ветку в origin на gitosis, делает пулл реквест в upstream.
Обязательно второй программист делает ревью, проверяет что ничего не сломано и лишь затем он же нажимает кнопку впулить.

Билд же для продакшена собирается ant или copistrano, из тега, максимум из stable.