git commit する前にコンフリクトの残りがないかチェックする
git でコンフリクトが起きて解消したつもりが、じつは「<<<<<<<」などが残っていてもコミットすることができます。HTMLなどだとエラーも発生しないので、気づいたら「git push origin master」していた...なんてことにならないように git commit する前にチェックするようにしてみました。
実行した結果
実際のソース
- .git/hooks/pre-commit.sample というファイルが実際には置いてあります。この中身は、すごく参考になります
- .git/hooks/pre-commit として下記のソースを置くとチェックしてくれて全て解消しないと、コミットできません。
.git/hooks/pre-commit
#!/bin/sh
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# コンフリクトしたファイルを探す
# 該当のファイルは、赤文字で表示(Macで確認)
for FILE in `git diff-index --name-status $against | grep -E '\.*$' | cut -c3-`; do
grep_result=`grep -E '(<<<<<<<|>>>>>>>)' $FILE | grep -v '^$'`
if [ -n "${grep_result}" ]
then
echo $'\e[1;31m'$FILE$'\e[m' ' <- コンフリクトの対応がのこっています'
echo $grep_result
exit 1
fi
done
.git/hooks/pre-commit
#!/bin/sh
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# コンフリクトしたファイルを探す
# 該当のファイルは、赤文字で表示(Macで確認)
for FILE in `git diff-index --name-status $against | grep -E '\.*$' | cut -c3-`; do
grep_result=`grep -E '(<<<<<<<|>>>>>>>)' $FILE | grep -v '^$'`
if [ -n "${grep_result}" ]
then
echo $'\e[1;31m'$FILE$'\e[m' ' <- コンフリクトの対応がのこっています'
echo $grep_result
exit 1
fi
done
Author And Source
この問題について(git commit する前にコンフリクトの残りがないかチェックする), 我々は、より多くの情報をここで見つけました https://qiita.com/matsuhisa_h/items/0b9de2ef534807065e54著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .