我在想知道是否有一種方法可以阻止存儲庫上的'git push --force
'(僅在master分支上)?有沒有辦法配置git存儲庫來拒絕'git push --force'?
假設我有遠程的Git倉庫,做:
- '
git push
' 到 '主人'。有用。 - '
git push --force
'到'branch-1'。有用。 - '
git push --force
'到'master'。它被拒絕。
它甚至有可能嗎?
感謝您的任何答案和建議。
BR, Dawid。
我在想知道是否有一種方法可以阻止存儲庫上的'git push --force
'(僅在master分支上)?有沒有辦法配置git存儲庫來拒絕'git push --force'?
假設我有遠程的Git倉庫,做:
git push
' 到 '主人'。有用。git push --force
'到'branch-1'。有用。git push --force
'到'master'。它被拒絕。它甚至有可能嗎?
感謝您的任何答案和建議。
BR, Dawid。
設置配置變量:
receive.denyNonFastForwards
receive.denyDeletes
將阻止來自全國各分公司工作的任何「逼」推。
如果你想要更好的預分支控制,那麼你將不得不在遠程存儲庫上使用'鉤子',可能是'更新'鉤子。
有一個名爲'update-paranoid'的示例更新鉤子,它可能會在'contrib'文件夾中的git分發中做你需要的(和更多)。
我寫了這個更新快鉤,以防止在「開發」分支在倉庫非快速向前更新(推):
#!/bin/sh
REFNAME=$1
OLDSHA=$2
NEWSHA=$3
if [ "refs/heads/dev" != $REFNAME ]; then
exit 0
fi
MERGEBASE=$(git merge-base $OLDSHA $NEWSHA)
if [ $OLDSHA = $MERGEBASE ]; then
exit 0
fi
echo "Not a fast-forward on branch dev"
exit 1
Github上已經推出了概念受保護的樹枝!
它可以在Settings -> Branches -> Protected Branches
找到。功能現在適用於所有用戶 - 不僅是企業!
可以爲任何分支和任何用戶(包括管理員)啓用此「保護」。
更多詳細的活動 - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/
所以不需要更多的鉤和任意代碼。
1的鉤(原始版本:http://git.kernel.org/?p=git/git.git;a=blob_plain;f=contrib/hooks/update-paranoid;hb=080cbc1275ac09445136ba429d90b5ec85e92c1c) – VonC 2009-11-18 09:04:27
任何方式爲GitHub做到這一點? – 2012-11-19 16:11:32
GitHub上的'update-paranoid':https://github.com/git/git/blob/master/contrib/hooks/update-paranoid – go2null 2016-08-04 17:58:50