1. ホーム
  2. git

[解決済み] masterブランチでのコミットを防止する

2022-09-19 19:47:17

質問

(簡単のために) 私は master ブランチと dev ブランチを作成します。私は master ブランチが常に稼働しているようにしたいので、私が行う作業はすべて dev ブランチにあるはずです。

しかし、変更をマージする際に --no-ff でマージする場合、私はしばしば master ブランチにとどまり、その中で作業を続けることになります (なぜなら、自分の dev ブランチをチェックアウトするのを忘れてしまうからです)。

のルールを貼ることができますか? master ブランチに対して、コミットやマージの早送りはできないが、唯一 --no-ff は別のブランチからマージするのですか?

これはプライベートホストリポジトリ(つまり、GitHubやBitbucketではない)で動作する必要があります。

どのように解決するのですか?

はい、可能です。master ブランチへのコミットを拒否する pre-commit フックを作成する必要があります。Git は、あなたが マージ コマンドを呼び出したときにはプレコミットフックを呼び出さないので、このフックは通常のコミットのみを拒否することになります。

  1. リポジトリに移動します。

  2. ファイルを作成します。 .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
    
    
  3. 実行可能な状態にする (以下の場合は不要) Windows ):

    chmod +x .git/hooks/pre-commit
    
    

無効化する場合 早送り のマージを無効にするには、次のオプションを .git/config ファイルに追加する必要があります。

[branch "master"]
    mergeoptions = --no-ff

リモートのmasterブランチも保護したい場合は、この回答を確認してください。 Git で master ブランチへのアクセスを制限する方法