#症状
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