18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git commit する前にコンフリクトの残りがないかチェックする

Last updated at Posted at 2015-06-04

git でコンフリクトが起きて解消したつもりが、じつは「<<<<<<<」などが残っていてもコミットすることができます。HTMLなどだとエラーも発生しないので、気づいたら「git push origin master」していた...なんてことにならないように git commit する前にチェックするようにしてみました。

実行した結果

スクリーンショット 2015-06-05 0.37.46.png

実際のソース

  • .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

18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?