Ngoài việc thay đổi URL đẩy thành một cái gì đó không hợp lệ (ví dụ git remote set-url --push origin DISABLED
:), người ta cũng có thể sử dụng pre-push
hook.
Một cách nhanh chóng để dừng lại git push
là symlink /usr/bin/false
để trở thành cái móc:
$ ln -s /usr/bin/false .git/hooks/pre-push
$ git push
error: failed to push some refs to '...'
Sử dụng móc cho phép kiểm soát lực đẩy tốt hơn nếu muốn. Xem .git/hooks/pre-push.sample
ví dụ về cách ngăn chặn các cam kết đang thực hiện.
Để tránh đẩy vào một nhánh cụ thể hoặc để hạn chế đẩy sang một nhánh duy nhất, điều này trong một ví dụ móc:
$ cat .git/hooks/pre-push
#!/usr/bin/sh
# An example hook script to limit pushing to a single remote.
#
# This hook is called with the following parameters:
#
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
#
# If this script exits with a non-zero status nothing will be pushed.
remote="$1"
url="$2"
[[ "$remote" == "origin" ]]
Một repo thử nghiệm với nhiều điều khiển từ xa:
$ git remote -v
origin ../gitorigin (fetch)
origin ../gitorigin (push)
upstream ../gitupstream (fetch)
upstream ../gitupstream (push)
Đẩy đến origin
được cho phép:
$ 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
Không được phép đẩy vào bất kỳ điều khiển từ xa nào khác:
$ git push upstream
error: failed to push some refs to '../gitupstream'
Lưu ý rằng pre-push
tập lệnh hook có thể được sửa đổi thành, trong số những thứ khác, in một thông báo tới stderr nói rằng việc đẩy đã bị vô hiệu hóa.