2013-03-21 5 views
5

git에서 "프로덕션 지점에서 커밋을 시도하고 있습니다. (y/N) 확실합니까?"라는 메시지가 나타납니다. 모든 커밋 전에 메시지. 메시지에서 분명한 바와 같이 특정 브랜치 (프로덕션 지점)에서만 위조 된 커밋을 피하기를 원합니다.커밋 전에 나를 알리는 git

답변

3

는 프롬프트를 적절하게 설정하고 당신은 항상에있는 지점 참조 - 당신이 시도 등 더 나은 자식 프롬프트, 루비 버전 프롬프트, 파이썬 VIRTUALENV 프롬프트와 같은 더 나은 도구를 원한다면 https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

bash-it-https://github.com/revans/bash-it

정확한 해결책을 원한다면 git commit을위한 별칭 스크립트를 설정하고 pre-commit hook 등을 설정하면 현재 분기를 볼 수 있고 필요할 때마다 프롬프트가 표시됩니다.

1

Git Hook처럼 사용할 수 있습니다. .git/hooks에있는 스크립트로 커밋 프로세스의 여러 단계와 같이 특정 이벤트가 발생할 때 git을 실행할 수 있습니다.
이러한 후크 중 하나는 '사전 커밋'후크입니다. 자식 목록에서 :

커밋 메시지를 입력하기 전에 먼저 커밋 훅이 먼저 실행됩니다. 커밋 할 스냅 샷을 검사하고, 무언가를 잊었는지 확인하고, 테스트를 실행하는지 확인하고, 코드에서 검사해야하는 내용을 검사하는 데 사용됩니다. 이 후크에서 비 제로를 중단 종료 커밋 [...]

그래서, 당신은 같은 것을 할 수있는 : .git하는

  • 이름 바꾸기 .git/후크/사전 commit.sample을/hooks/pre-commit (hook 사용 가능)
  • 스크립트에 현재 브랜치 이름을 가져 오는 코드를 추가하십시오. 아마 git status -sb | awk '{print $2}' (더 좋은 방법이있을지라도)과 같은 것일 수 있습니다.
  • 프로덕션 지점에 있는지 확인하고 사용자에게 y/n을 묻습니다.
  • 사용자가 '아니요'를 선택하면 커밋을 중단하기 위해 0이 아닌 코드로 종료하십시오.
5

프로덕션 지점에 있는지 여부를 확인하기 위해 사전 커밋 훅을 사용할 수 있지만 훅 스크립트는 사용자로부터 정보를 수집 할 수 없습니다. 가능한 대안은 git commit에 대한 --no-verify (또는 -n) 옵션이 실제로 커밋을 수행하는 데 사용되어야한다고 말합니다.

#/bin/sh 
case "$(git rev-parse --symbolic-full-name HEAD)" in 
    refs/heads/production) 
     echo 'Use `git commit --no-verify` to commit to production branch' 
     exit 1 
     ;; 
esac 
:

는 다음 .git/hooks/pre-commit처럼 뭔가를 할 수