8

master 以外のブランチのみを上書きできるように、自分の git リポジトリを保護したいと考えています。選択したブランチのみを保護する方法はありますか?

4

7 に答える 7

4

GitEnterpriseを使用して、ブランチごとのアクセス許可(admin)を設定し、きめ細かいアクセスアクセス許可を使用して非早送りプッシュをブロックできます。

そしてgit config --system receive.denyNonFastForwards true、すべてのブランチの履歴変更をブロックする必要がある場合は、単にその仕事をします。

于 2012-07-16T08:08:55.470 に答える
1

構成することにより、早送り以外の更新を防ぐことができますdenyNonFastForwards

git config --system receive.denyNonFastForwards true

ただし、すべてのブランチに適用されます。詳細については、ProGitを参照してください。

于 2012-07-16T07:44:42.733 に答える
0

サーバー側でリポジトリにアクセスするために何を使用するかによると思います。GerritGitlabなど、ブランチごとのアクセス許可をサポートするサーバーアプリケーションがいくつかあります(ただし、Gitlabがユースケースをサポートしているかどうかはわかりません)。私は会社で同様のワークフローを使用しているため、Gerritはそれをサポートしています。

たぶん、Gitoliteもそれをサポートしています(Gitlabが内部で使用しているものです)。これはセットアップが簡単ですが、GerritやGitlabのようなWebインターフェイスはありません。

追加コメント:提案されているように、GitEnterpriseも優れたソリューションですが、独自のサーバー(多くの企業で一般的)がある場合は、私の提案が適しています。

于 2012-07-16T10:00:48.627 に答える
0

このSOの答えは、探しているものを提供します。代わりに master ブランチに適用するように編集するだけです:

#!/bin/sh
# lock the master branch for pushing
refname="$1"

if [ "$refname" = "refs/heads/master" ]
then
    echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    echo "You cannot push to the master branch."
    echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    exit 1
fi
exit 0

更新:
これにより、早送りを含むマスター ブランチへのすべてのプッシュが防止されます。

于 2012-07-16T07:42:38.643 に答える
0

サーバーの変更が許可されている場合は、サーバーでの早送りが有効になります。

ssh ip 'echo $"[receive]
    denyDeletes = false
    denyNonFastForwards = false" >> /path/to/repo/config'
#then git push -f origin master
于 2014-04-08T17:08:30.860 に答える