นอกเหนือจากการเปลี่ยน URL การพุชเป็นสิ่งที่ไม่ถูกต้อง (เช่นgit remote set-url --push origin DISABLED
) แล้วยังสามารถใช้pre-push
ฮุกได้อีกด้วย
วิธีที่รวดเร็วในการหยุดgit push
คือ symlink /usr/bin/false
เป็น hook:
$ ln -s /usr/bin/false .git/hooks/pre-push
$ git push
error: failed to push some refs to '...'
การใช้ตะขอช่วยให้สามารถควบคุมแรงกดได้ละเอียดยิ่งขึ้นหากต้องการ ดู.git/hooks/pre-push.sample
ตัวอย่างของวิธีป้องกันการผลักดันการทำงานระหว่างทำ
เพื่อป้องกันการกดไปที่สาขาที่เฉพาะเจาะจงหรือ จำกัด การดันไปยังสาขาเดียวสิ่งนี้ในเบ็ดตัวอย่าง:
$ 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" ]]
repo ทดสอบพร้อมรีโมทหลายตัว:
$ git remote -v
origin ../gitorigin (fetch)
origin ../gitorigin (push)
upstream ../gitupstream (fetch)
upstream ../gitupstream (push)
origin
อนุญาตให้กดเพื่อ:
$ 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
ไม่อนุญาตให้กดไปที่รีโมทอื่น:
$ git push upstream
error: failed to push some refs to '../gitupstream'
โปรดทราบว่าpre-push
เบ็ดสคริปต์สามารถปรับเปลี่ยนเป็นเหนือสิ่งอื่นใดพิมพ์ข้อความไปยัง stderr บอกว่าการผลักถูกปิดการใช้งาน