Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
16
Help us understand the problem. What is going on with this article?
@FrogWoman

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

More than 1 year has passed since last update.

症状

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
16
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
FrogWoman
(Qiitaに書いてる理由)自分用のメモでもあり、自分が躓いたところで他の人が同じように躓いて時間を無駄にするようなことが減るといいなあと思い書いてます。 間違い等があれば指摘してもらえると有難いです

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
16
Help us understand the problem. What is going on with this article?