Oprócz zmiany adresu URL push na nieprawidłowy (np. git remote set-url --push origin DISABLED
), Można również użyć pre-push
hooka.
Jednym z szybkich sposobów zatrzymania git push
jest użycie linku symbolicznego, /usr/bin/false
który ma być hakiem:
$ ln -s /usr/bin/false .git/hooks/pre-push
$ git push
error: failed to push some refs to '...'
Użycie haka pozwala na dokładniejszą kontrolę pchnięć, jeśli jest to pożądane. Zobacz .git/hooks/pre-push.sample
przykład, jak zapobiegać wypychaniu zatwierdzeń pracy w toku.
Aby zapobiec wypychaniu do określonej gałęzi lub ograniczyć wypychanie do jednej gałęzi, w przykładzie haka:
$ cat .git/hooks/pre-push
remote="$1"
url="$2"
[[ "$remote" == "origin" ]]
Repozytorium testowe z wieloma pilotami:
$ git remote -v
origin ../gitorigin (fetch)
origin ../gitorigin (push)
upstream ../gitupstream (fetch)
upstream ../gitupstream (push)
Pchanie do origin
jest dozwolone:
$ git push origin
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 222 bytes | 222.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../gitorigin
* [new branch] master -> master
Pchanie do innego pilota jest niedozwolone:
$ git push upstream
error: failed to push some refs to '../gitupstream'
Należy zauważyć, że pre-push
skrypt przechwytujący można zmodyfikować, aby, między innymi, wypisywać na stderr komunikat informujący, że wypychanie zostało wyłączone.