2013-06-25 10 views
14

В моем локальном дереве git я выворачиваю фиксацию из ветви «master» в репозитории, но вся разработка выполняется в другой ветке и также перемещается в другую ветку.Предотвращение совершается в локальном филиале

Я хотел бы избежать ошибок и предотвратить случайные коммиты в моей локальной ветке «master» и разрешить только запросы на вытягивание (тогда я бы переустановил ветвь разработки на обновленный мастер). Это возможно? Как?

ответ

24

Вы можете использовать pre-commit hook.

Например, поместите следующий скрипт в .git/hooks/pre-commit:

#!/bin/bash 
if test $(git rev-parse --abbrev-ref HEAD) = "master" ; then 
    echo "Cannot commit on master" 
    exit 1 
fi 

И установить его в качестве исполняемого

chmod +x .git/hooks/pre-commit 
+1

Спасибо, что, кажется, что мне нужно. Чтобы быть уверенным, что это не помешало бы «git pull», верно? Я спрашиваю, потому что я не могу проверить его, пока на сервере не появится какое-то обновление. – Jellby

+1

Нет, это должно быть хорошо, это повлияет только на попытку совершить мастер. – brice

+1

@Jellby: для тестирования: 'git clone/my/local/project project-test; cd project-test' Затем используйте 'project-test' с' project' как удаленным и проверьте свой крючок с помощью 'testBracnh' вместо' master' – LeGEC