Git Error 集

mergeしたら時々起こる

fetch & mergeでよく起こります。

error: The following untracked working tree files would be overwritten by merge:

.gitignoreで指定されているファイルやディレクトリがリモートブランチに存在する場合にでるエラーになります。このエラーは場合によっては結構困る。
一つの方法としては、エラー対象のファイルを.gitignoreから外すというやつです。この場合いったんキャッシュ消して.gitignoreをもう一回コミットしてやらないとダメです。

$ git rm -r --cached .
$ git add .
$ git commit -m ".gitignore更新"

みたいな感じにしてあげます。
もうひとつはmergeの代わりにresetしてそのまんま強制的に取得してしまうというやり方です。リモートブランチが最新で自分のローカルリポジトリがかなり古いとかそういう信頼や自信がある際にはこれでもよいかと思われます。私は進行管理している途中で開発がどんどん進んじゃって後から追っかけてresetすることが結構頻繁にあります。

$ git fetch
$ git reset --hard HEAD^

これだと自分のローカルリポジトリが全部上書きされてしまうのでご注意。ブランチ作るなりいろいろやりましょう。

fatal: The remote end hung up unexpectedly

pushするとよく出てきます。設定がとくにまちがっていないのにこういうのがよく出るので初心者は困惑。

$ git push -u origin master
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly
  • そもそもリモートリポジトリのアドレスが間違っている(そもそもsshで接続できていないとか)
  • リモートリポジトリ側のFWとかIP制限とかしているとき

error: Untracked working tree file ‘FILE_PATH’ would be overwritten by merge. Aborting

fetch & mergeの後で出たエラー。

error: Untracked working tree file 'www/wp/wp-config.php' would be overwritten by merge.  Aborting

これは結構面倒。ローカル環境ではすでにignoreしているファイルがリモートリポジトリに存在していた場合に起こります。

Gitがクラッシュしたときに起こるやつ

fatal: Unable to create '/Users/foo/localhost/bar/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

ってなったら、.git/index.lockをrmしてしまうといいです。そうすると、addからやり直しになりますが機能には全然問題ないです。

fatal: CRLF would be replaced by LF in PATH

このエラーが出るとaddできないんですね。対処療法的なやり方ですが、viとかvimで開いて、

:set ff=unix

してあげると、とりあえずは治ります。LFに統一した方がいいですね。

insufficient permission for adding an object to repository database .git/objects

Linux上でユーザーを重複して作業するとでるエラーらしいけど本当のところどうなのでしょう。

chmod -R 777 ./git/objects

という解決方法がのってましたが、私の場合誰かがrootで作業したことが原因でした。理屈上777でいける筈なんですがrootのやつがあるとダメっぽいです。普通に権限を戻して解決。

Last update: 2017.11.20 (月)