[Git] FAQ

ブランチとタグが同じ名前になってしまいエラーが出る

src refspec <tag_name> matches more than one.
タグを消したい場合
git push origin :refs/tags/<tag_name>
ブランチを消したい場合
git push origin :refs/heads/<branch_name>

warning: LF will be replaced by CRLF in

gitのconfigでcore.autoCRLFtrueになっていないか確認する。

$ git config --global core.autoCRLF

trueになっていたらfalseにする。

$ git config --global core.autoCRLF false

改行コードを強制したい

autocrlf設定によって変わってしまう改行コードを抑制したい場合。

.gitattributesに設定する。


* text=auto

*.bat  text eol=crlf
*.vbs  text eol=crlf
*.sh   text eol=lf
*.txt  -text

  • text属性を付けるとautocrlfによって自動で改行変換する
  • text eol=..で改行コードを指定すると、必ずその改行コードに変換する
  • -texttext属性を外すと改行変換しない

競合を解消したい

1. 内容を1つにマージする

好きなエディタでファイルをマージする。

一方で完全に上書きしたい場合は以下のコマンドを使える。競合が激しいときはこっちの方がいいかも。

# 現在のブランチを優先
git checkout --ours <files...>
# マージするブランチを優先
git checkout --theirs <files...>

2. 変更点をコミット

addを忘れやすいので注意。

git add <files...>
git commit

メッセージは自動で生成してくれる。

GitHubにpushすると画像ファイルが不正になる

画像ファイルがテキストと判断され、改行コードと一致するバイナリが自動変換されていないか確認する.
git addで改行コード変換メッセージが出たら要注意.

.gitattributes* text eol=lfのような記載がある場合は以下のように定義を追加する.

*.png binary
*.jpg binary
*.gif binary

※ 他にもバイナリとみなしたいものは列挙が必要