पुश URL को कुछ अमान्य (जैसे git remote set-url --push origin DISABLED
) में बदलने के अलावा , कोई भी उपयोग कर सकता हैpre-push
हुक का ।
रोकने के लिए एक त्वरित तरीका हुक होने के git push
लिए सिमलिंक /usr/bin/false
करना है:
$ 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" ]]
कई रीमेक के साथ एक टेस्ट रेपो:
$ 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
हुक स्क्रिप्ट को संशोधित किया जा सकता है, अन्य बातों के अलावा, स्टेंडर को एक संदेश प्रिंट करें जिसमें कहा गया है कि पुश अक्षम कर दिया गया है।