私は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