(簡単にするために)Git-repoにはmaster
ブランチとdev
があります。 master
ブランチが常に機能していることを確認したいので、私が行うすべての作業はdev
ブランチで行う必要があります。
ただし、変更を--no-ff
マージにマージすると、master
ブランチに留まり、そこで作業を続ける傾向があります(dev
ブランチをチェックアウトするのを忘れたため) 。
master
ブランチにルールを設定できます。このルールでは、コミットと早送りマージはできませんが、別のブランチからのマージは--no-ff
のみです。
これは、プライベートホストリポジトリ(GitHubおよびBitBucketではなくエルゴ)で動作する必要があります。
はい、可能です。マスターブランチへのコミットを拒否するプリコミットフックを作成する必要があります。 Gitはmergeコマンドを呼び出すときに事前コミットフックを呼び出さないため、このフックは通常のコミットのみを拒否します。
次の内容のファイル。git/hooks/pre-commitを作成します。
#!/bin/sh
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "master" ]; then
echo "You can't commit directly to master branch"
exit 1
fi
実行可能にします(Windowsでは不要):
$ chmod +x .git/hooks/pre-commit
fast-forwardマージを無効にするには、。git/configファイルに次のオプションも追加する必要があります。
[branch "master"]
mergeoptions = --no-ff
リモートのmasterブランチも保護したい場合は、この答えを確認してください: gitのmasterブランチへのアクセスを制限する方法