LoginSignup
26
18

More than 3 years have passed since last update.

git pull した際の unable to unlink old エラーを解決

Last updated at Posted at 2017-05-12

症状

git pull をした際に
error: unable to unlink old 'ファイル名'
となり、git status で確認するとリモートから持ってきた他人の修正ファイル等が
自分の modifiedファイルUntrackedファイル となっていた。

原因

試しに ls -la ファイル名 で確認してみると、
ファイルの所有者とグループが root になっており
現在ログインしているユーザ名と異なっていた。

多分、前にrootでpull等の作業を行ったためだと思われる。

解決

pullしてしまったファイル等を削除してしまう

今回の場合、自分の作業ファイルとしてpullしてしまっているようで git reset 等は使えなそうだったので以下の方法を使いました。
※何か他に良い方法があれば教えてください
別にログに拘らないのであれば一度全てステージしてcommitしても良いのかなーと思いました。

作業ファイルを取り消す

//全て取り消したいなら
git checkout .

//特定のファイルのみ
git checkout ファイルパス

追跡対象外のファイルを削除

//削除対象となるファイル一覧が表示
git clean -n

//全て削除していいなら
git clean -f

//特定のファイルだけ削除したいなら
git clean -f ファイルパス

試していないのですが、特定のファイルだけ の時に
あまりにも対象ファイルの方が多い場合は
git stash -p で作業ファイルを一時的に退避させるってのもできるかもしれない。

unable to unlink oldとなってるファイルの所有者とグループを変更する

'root' にログイン

su -

ファイルの所有者を変更

sudo chown ユーザ名 -R ファイルパス

ファイルのグループを変更

sudo chgrp ユーザ名 -R ファイルパス

作業ディレクトリ内を全て変更しても構わないかもしれない

cd  作業ディレクトリ
sudo chown -R ユーザ名 ./
sudo chgrp -R グループ名 ./

pullる

//ex.
git pull origin master
26
18
2

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
26
18