git-flow를 이용해서 회사 프로젝트를 진행하는데 git-flow에서는 master
브랜치에 대해 커밋을 허용하지 않는 형태로 진행이 됩니다. develop
-> feature
-> release
-> master
브랜치로 머지(Merge)가 되는 형태입니다.
그렇기 때문에 커밋이 발생 했을 때 취소하는 것 보다 문제가 발생되기 전에 해결하는 것이 좋은 방법이라는 생각이기 때문에 git-hook을 이용하여 master
브랜치에서 커밋전에 현재 커밋이 발생되는 브랜치가 master
라면 에러 메시지를 출력하고 커밋이 되지 않는 형태로 작성해 봤습니다.
아래 작성한 shell
스크립트에 실행권한을 주고 .git/hook/pre-commit
파일에 입력하면 master
브랜치에서 커밋이 되는 경우를 막게 됩니다.
#!/bin/bash # # FILE: .git/hook/pre-commit # # DESC: Stop accidental commits to master BRANCH=`git rev-parse --abbrev-ref HEAD` if [[ "$BRANCH" == "master" ]]; then echo -e "You are on \e[31m\e[1m[ $BRANCH ]\e[0m branch . You can not directly commit on \e[31m\e[1m[ $BRANCH ] \e[0mbranch" echo -e "Please checkout the other branch and commit" exit 1 fi exit 0