gitファイルのCOMMIT_EDITMSGは、各コミット後に読み取り専用に設定されます


2

私はdevプロジェクトでWindows 7(ユーザーはローカル管理グループにいます)でgitを使用していますが、変更をコミットするたびに、ファイルも.git/COMMIT_EDITMSG変更されます:コンテンツは最後のコミットメッセージに置き換えられます(これは問題ありません)に変更されましたreadonly

このプロパティの変更のため、次にコミットするときに「Permission denied」というエラーが返されます...

他の投稿で見たように、両方のファイルを削除しようとしました:.git/COMMIT_EDITMSG --.git/COMMIT_EDITMSG.bak

または、readonlyプロパティを手動でチェック解除しようとしましたが、次のコミットが成功した後も問題は残っています...

この問題を修復するにはどうすればよいですか?

prepare-commit-msgおそらく問題になる可能性のあるフックを設定したことに注意してください。以下のコンテンツをフックします。

#!/bin/bash

# Name this script "prepare-commit-msg"
# This script will prefix every commit msg with the branch name in brackets,
# except if we are on non working branch like develop or master.
# The branch name pattern is : {category}/{issue-nb}_{work-description}

if [ -z "$BRANCHES_TO_SKIP" ]; then
  BRANCHES_TO_SKIP=(master develop)
fi

# Find current branch name
BRANCH_NAME=$(git symbolic-ref --short HEAD)
# Remove category before slash (included)
BRANCH_NAME="${BRANCH_NAME##*/}"
# Remove description after first underscore (included)
BRANCH_NAME="${BRANCH_NAME%_*}"


# Check if the branch is excluded
BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
BRANCH_IN_COMMIT=$(grep -c "\[$BRANCH_NAME\]" $1)

# Check if branch name is not null, if the current branch is not an excluded one, and if the branch name is already in the commit msg
if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]] && ! [[ $BRANCH_IN_COMMIT -ge 1 ]]; then 
  # Add brackets around branch name and Prefix passed msg with it
  sed -i.bak -e "1s/^/[$BRANCH_NAME] /" $1
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.