Git Hooks는 리포지토리를 간단하게 관리합니다.

힘내 훌륭한 도구입니다. 후크를 통해 파일의 변경 사항을 추적할 수 있을 뿐만 아니라 다른 사람들과 원활하게 협업할 수 있습니다. 그런 점에서 Git은 FOSS의 발전을 이끈 도구 중 하나입니다. 그러나 Git의 가장 큰 문제 중 하나는 리포지토리를 관리하는 데 시간과 노력이 필요하다는 것입니다. 예를 들어 이러한 리포지토리를 실행하고 동기화하려면 XNUMX~XNUMX개의 git 명령이 필요할 수 있습니다. 이로 인해 관리가 지루할 뿐만 아니라 사용자 오류가 발생하기 쉽습니다. 여기에서는 리포지토리를 더 잘 관리할 수 있는 간단하면서도 강력한 Git 후크를 보여줍니다.

저장소 관리를 위한 간단한 Git Hooks - %categories

Git Hook이 무엇인가요?

기본적으로 git-hook은 Git이 리포지토리에서 작업을 수행할 때 실행되는 사용자 지정 스크립트를 만드는 데 사용할 수 있는 유연한 하위 명령입니다. 예를 들어 커밋하기 전에 스타일 오류가 있는지 리포지토리를 자동으로 확인하는 후크를 사용할 수 있습니다.

저장소 관리를 위한 간단한 Git Hooks - %categories

hook 하위 명령은 저장소의 ".git" 디렉토리 아래에 있는 "hooks" 폴더를 읽어서 작동합니다. 이 폴더에는 자동으로 실행할 수 있는 각 Git 작업에 대한 샘플 스크립트를 제공하는 미리 만들어진 여러 파일이 포함되어 있습니다.

저장소 관리를 위한 간단한 Git Hooks - %categories

대부분의 경우 원하는 스크립팅 언어로 git hook을 작성할 수 있습니다. 따라서 모든 소프트웨어 개발자가 매우 유연하고 쉽게 접근할 수 있습니다.

1. 마스터로 푸시 방지

Git에서 사용자가 저지르는 가장 일반적인 실수 중 하나는 개발 브랜치에서 마스터로 직접 커밋을 푸시하는 것입니다. Github를 사용하여 프로젝트를 추적하고 유지 관리하는 경우 이는 매우 실망스러울 수 있습니다.

저장소 관리를 위한 간단한 Git Hooks - %categories

마스터 브랜치에서 리포지토리를 푸시하려고 할 때마다 확인하고 확인하는 사전 푸시를 생성하여 이 문제를 방지할 수 있습니다.

  1. 이동 Git 저장소 보호하고 싶은 것.저장소 관리를 위한 간단한 Git Hooks - %categories
  2. 창조하다 힘내 후크 파일 스크립트 교정기를 사용합니다. 이 후크는 이전에 실행되어야 하므로 "지불" 그런 다음 후크를 만들어야 합니다. "선불":
    .git/hooks/pre-push를 터치합니다.
  3. 열다 후크 파일 새로운 텍스트 에디터.
    나노 .git/hooks/pre-push
  4. 안에 쓰다 "결제 전" 후크. 예를 들어 다음은 마스터 브랜치에서 푸시할 때 확인을 요청하는 스크립트입니다.
    #!/bin/sh protect='마스터' current=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') if [ $protect = $current ] 그런 다음 -p "마스터로 푸시 확인? Y/n"을 읽습니다. -n 1 -r < /dev/tty 에코 if echo $REPLY | grep -E '^[Yy]$' > /dev/null then exit 0 fi exit 1 else exit 0 fi
  5. 저장 새로운 후크. 안에 나노 누르시면 됩니다 Ctrl + O , 그런 다음 Ctrl + X.저장소 관리를 위한 간단한 Git Hooks - %categories
  6. Git이 새 후크를 실행할 수 있도록 다음 명령을 실행합니다.
chmod +x .git/hooks/pre-push

2. 마스터 브랜치에 대한 푸시 거부

자신이 마스터로 푸시되는 것을 방지하는 것 외에도 서버 측에서 마스터 브랜치로의 푸시를 거부하는 후크를 만들 수 있습니다. 이는 여러 개발자와 저장소를 공유하는 경우 매우 유용합니다.

또한 읽기:  Skype 번역이 모바일 및 Windows에서 작동하지 않는 문제를 해결하는 3가지 방법

저장소 관리를 위한 간단한 Git Hooks - %categories

제한된 사용자가 마스터 분기로 푸시되는 것을 자동으로 방지하는 '사전 수신' ​​후크를 생성하여 이 문제를 해결합니다.

  1. 창조하다 "사전 획득"을 위한 Git 후크 파일 원격 창고에서.
    .git/hooks/pre-receive 터치
  2. 이것을 열어 파일.
    nano .git/hooks/pre-receive
  3. 거부 텍스트 추가 훅 "선불 영수증". 예를 들어 다음 코드 줄은 기본적으로 작동해야 합니다.
    #!/bin/sh branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') 블랙리스트=(앨리스 밥) if [[ ${블랙리스트[ *]} =~ $USER ]]; if [ "$branch" == "마스터" ]; then echo "이 분기에서 변경 사항을 커밋할 수 없습니다." exit 1 fi fi
  4. 새 후크 파일을 저장합니다. 제 경우에는 Ctrl+O를 누른 다음 Ctrl+X를 눌러 파일을 저장해야 합니다.
  5. 저장 후크 텍스트 실행 가능하게 만드세요.
chmod +x .git/hooks/사전 수신

팁: Git 별칭을 사용하여 Git을 보다 효율적으로 사용할 수도 있습니다.

3. Rebasing에서 리포지토리 잠금

Git에서 사용자가 저지르는 또 다른 일반적인 실수는 현재 활성 분기를 재설정하는 것입니다. 리팩토링은 다른 사용자가 만든 커밋을 제거하므로 기여자가 많은 저장소에서 작업하는 경우 실망스러운 문제가 될 수 있습니다.

저장소 관리를 위한 간단한 Git Hooks - %categories

현재 분기가 닫혀 있는지 여부를 확인하는 '사전 재설정' 후크를 생성하여 이 문제를 방지할 수 있습니다.

  1. 만들어진 "사전 리베이스" 파일 디렉토리에서 ".git/후크":
    .git/hooks/pre-rebase 터치
  2. 이것을 열어 편집용 파일.
    나노 .git/hooks/pre-rebase
  3. 스크립트 추가 리베이스 시작하다 새 후크 파일.
    #!/bin/sh branch="$2" [ -n "$branch" ] || branch=$(git rev-parse --abbrev-ref HEAD) lock="branch.${branch}.rebaselock" if [ "$(git config --bool "$lock")" = true ]; then echo "pre-rebase hook: \"$lock\"이 true로 설정되었습니다. rebase 거부." 1번출구
  4. 저장 후크 파일 새로 만들고 실행 가능하게 만드십시오.
chmod +x .git/hooks/pre-rebase

4. 코드에서 스타일 및 구문 확인 강제 실행

후크 Git의 가장 유용한 용도 중 하나는 이를 린터 코드에 연결하는 것입니다. 이것은 코드가 프로젝트의 스타일과 형식을 따르는지 확인하는 간단한 프로그램입니다.

또한 읽기:  여러 연락처에 WhatsApp 메시지를 보내는 4가지 방법

저장소 관리를 위한 간단한 Git Hooks - %categories

  1. 연관시키다 linter Git 리포지토리에 먼저 후크 파일을 만듭니다. "사전 약속".
    .git/hooks/pre-commit을 터치합니다.
  2. 설치 linter 프로젝트 언어에 적합합니다. 이 경우, 나는 "쉘체크" 내 Bash 코드를 구문 분석하려면:
    sudo apt 설치 shellcheck
  3. 열다 후크 파일 new 다음 스크립트를 추가하십시오.
    #!/bin/bash for file in $(git diff --cached --name-only --diff-filter=AM | grep -E '\.sh$') do shellcheck "$file" # 린터 실행 모든 새 파일. 만약 [$? -ne 0 ]; then exit 1 # 린터가 실패하면 커밋을 종료합니다. 완료
  4. 저장 후크 파일 새로 만들고 실행 가능하게 만드십시오.
    chmod +x .git/hooks/사전 커밋

5. 리포지토리 변경 사항을 사용자에게 자동으로 알림

마지막으로 리포지토리가 새 커밋을 받을 때마다 자동으로 이메일을 보내는 Git 후크를 만들 수도 있습니다. 이는 리포지토리에 대한 간단한 알림 시스템을 생성하려는 경우에 유용합니다.

  1. 창조하다 후크 파일 "post-receiver" 디렉토리에서 .git / 후크 창고에서:
    .git/hooks/post-receive 터치
  2. 열다 힘내 후크 파일 new를 선택하고 다음 스크립트를 입력합니다.
    #!/bin/sh commit_message=$(git log -1 --pretty=%B) 사용자=("[이메일 보호]""[이메일 보호]""[이메일 보호]”) "${users[@]}"의 사용자에 대해 메일 -s "새 커밋: $commit_message" $user < /dev/null 완료
  3. 저장 후크 파일 새로 만들고 실행 가능하게 만드십시오.
    chmod +x .git/hooks/post-receive

자주 묻는 질문

Q1. C와 같은 컴파일 언어로 Git hook을 작성할 수 있습니까?

또한 읽기:  iPhone 및 Android에서 Apple Music 구독을 취소하는 방법

답변. Git Hooks의 가장 큰 한계 중 하나는 터미널에서 직접 실행할 수 있는 언어를 사용해야 한다는 것입니다. 즉, Git 후크는 스크립트에 대해 현지화된 언어를 지원하지 않습니다. 예를 들어 C 또는 C++가 아닌 Python 또는 Shell을 사용하여 새 Git 후크를 만들 수 있습니다.

Q2. 동일한 Git 리포지토리에서 여러 후크를 실행할 수 있습니까?

답변. 응. 위의 예에서는 후크를 별도의 개별 기능으로 보여 주지만 쉽게 혼합하여 자신만의 고유한 워크플로를 만들 수 있으므로 Git 후크는 매우 유연하고 모든 코딩 상황에 적응할 수 있습니다. 예를 들어 저장소에서 "Prevent Push to Master" 후크와 "Syntax Check" 사전 커밋 후크를 모두 사용할 수 있습니다.

Q3.Git 후크가 사용자에게 이메일을 보내지 않는 이유는 무엇입니까?

답변. 이 문제는 원격 서버가 발신 이메일을 제대로 보낼 수 없기 때문에 발생했을 가능성이 큽니다. 이 문제를 해결하려면 원격 서버가 안전하고 SMTP 도메인과 함께 작동하는 메일 배달 에이전트가 있는지 확인하십시오.

당신은 또한 좋아할 수 있습니다