1. matsuhisa_h

    Posted

    matsuhisa_h
Changes in title
+git commit する前にコンフリクトの残りがないかチェックする
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,34 @@
+git でコンフリクトが起きて解消したつもりが、じつは「<<<<<<<」などが残っていてもコミットすることができます。HTMLなどだとエラーも発生しないので、気づいたら「git push origin master」していた...なんてことにならないように git commit する前にチェックするようにしてみました。
+
+# 実行した結果
+
+![スクリーンショット 2015-06-05 0.37.46.png](https://qiita-image-store.s3.amazonaws.com/0/21321/9fbacc96-d991-eca9-a7e1-8a882fa28775.png)
+
+# 実際のソース
+
+* .git/hooks/pre-commit.sample というファイルが実際には置いてあります。この中身は、すごく参考になります
+* .git/hooks/pre-commit として下記のソースを置くとチェックしてくれて全て解消しないと、コミットできません。
+
+```bash:.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
+
+```