Die git-Datei COMMIT_EDITMSG wird nach jeder Festschreibung schreibgeschützt gesetzt

567
ylerjen

Ich verwende git unter Windows 7 (mein Benutzer ist in der lokalen Admin-Gruppe) mit meinem Entwicklungsprojekt, aber jedes Mal, wenn ich Änderungen festschreibe, ändert sich auch die Datei .git/COMMIT_EDITMSG: Der Inhalt wird durch die letzte Commit-Nachricht ersetzt (was in Ordnung ist) geändert in readonly.

Aufgrund dieser Eigenschaftsänderung wird beim nächsten Commit, das ich ausführen werde, ein Fehler "Permission denied" zurückgegeben.

Wie ich in anderen Beiträgen gesehen habe, habe ich versucht, beide Dateien zu löschen: - .git/COMMIT_EDITMSG -.git/COMMIT_EDITMSG.bak

Oder ich habe auch versucht, die readonlyEigenschaft manuell zu deaktivieren, aber das Problem ist nach dem nächsten erfolgreichen Commit immer noch da ...

Was muss ich tun, um dieses Problem zu beheben?

Beachten Sie, dass ich einen prepare-commit-msgHaken gesetzt habe, was vielleicht das Problem sein kann? Hakeninhalt unten:

#!/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 : /_  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="$" # Remove description after first underscore (included) BRANCH_NAME="$"   # Check if the branch is excluded BRANCH_EXCLUDED=$(printf "%s\n" "$" | 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 
1

0 Antworten auf die Frage