GIT-RECEIVE-PACK(1) (NAME) git-receive-pack - (push) (SYNOPSIS) git receive-pack (DESCRIPTION) git send-pack . . git send-pack . (pull) git-fetch-pack(1) . (fast-forward) sha1 (/) ( git-receive-pack send-pack . ) update post-update Documentation/howto . git-receive-pack receive.denyNonFastForwards fast-forward . *receive git-config(1) . (OPTIONS) . --p-backend-info-refs git-http-backend(1) $GIT_URL/info/refs?service=git-receive-pack . --p-backend-info-refs git-upload- pack(1) . --ip-connectivity-check (transitive closure) . . . . PRE-RECEIVE (PRE-RECEIVE HOOK) $GIT_DIR/hooks/pre-receive . : sha1-old SP sha1-new SP refname LF refname $GIT_DIR master "refs/heads/master" . sha1 refname refname . sha1-old 0{40} sha1-new 0{40} sha1-old sha1-new . (push git- push(1) ) push blob GIT_PUSH_CERT . post-receive . GPG : GIT_PUSH_CERT_SIGNER . GIT_PUSH_CERT_KEY GPG . GIT_PUSH_CERT_STATUS GPG %G? git log ( git-log(1) ). GIT_PUSH_CERT_NONCE (nonce) . "nonce" "git push" . GIT_PUSH_CERT_NONCE_STATUS UNSOLICITED "git push --gned" . MISSING "git push --gned" . BAD "git push --gned" . OK "git push --gned" . SLOP "git push --gned" . GIT_PUSH_CERT_NONCE_SLOP . GIT_PUSH_CERT_NONCE_SLOP "git push --gned" . GIT_PUSH_CERT_NONCE_STATUS SLOP . receive.certNonceSlop git-config(1) . fast-forward . pre-receive update post-receive post-update . . . UPDATE (UPDATE HOOK) $GIT_DIR/hooks/update : $GIT_DIR/hooks/update refname sha1-old sha1-new refname $GIT_DIR master "refs/heads/master" . sha1 refname . refname sha1-old 0{40} ( ) refname . . . ( ) . ( ) . post-receive . POST-RECEIVE (POST-RECEIVE HOOK) ( ) $GIT_DIR/hooks/post-receive . : sha1-old SP sha1-new SP refname LF refname $GIT_DIR master "refs/heads/master" . sha1 refname refname . sha1-old 0{40} sha1-new 0{40} sha1-old sha1-new . GIT_PUSH_CERT* pre-receive . . : #!/bin/sh # mail out commit update information. while read oval nval ref do if expr "$oval" : '0*$' >/dev/null then echo "Created a new ref, with the following commits:" git rev-list --retty "$nval" else echo "New commits:" git rev-list --retty "$nval" "^$oval" fi | mail -s "Changes to ref $ref" commit-list@mydomain done # log signed push certificate, if any if test -n "${GIT_PUSH_CERT-}" && test ${GIT_PUSH_CERT_STATUS} = G then ( echo expected nonce is ${GIT_PUSH_NONCE} git cat-file blob ${GIT_PUSH_CERT} ) | mail -s "push certificate from $GIT_PUSH_CERT_SIGNER" push-log@mydomain fi exit 0 . refname sha1-new . git-receive-pack . refname sha1-new . POST-UPDATE (POST-UPDATE HOOK) $GIT_DIR/hooks/post-update post-update . . git-receive-pack . git update-server-info . #!/bin/sh exec git update-server-info (QUARANTINE ENVIRONMENT) receive-pack "" $GIT_DIR/objects pre-receive . . : 1. pre-receive . . 2. pre-receive ( ). 3. pre-receive . ( pre-receive ). pre-receive . (SEE ALSO) git-send-pack(1), gitnamespaces(7) (GIT) git(1) Git 2.55.0 2026-06-29 GIT-RECEIVE-PACK(1)