web-dev-qa-db-ja.com

エラー:次の追跡されていない作業ツリーファイルは、チェックアウトによって上書きされます

git statusを実行すると、nothing to commit, working directory cleanと表示されます

そして、git pull --rebaseを実行します。

First, rewinding head to replay your work on top of it...
error: The following untracked working tree files would be overwritten by checkout:
    includes/resources/moduledata/12/_Fr4_02_Invention_IPA_SR_la-Fête.pdf
Please move or remove them before you can switch branches.
Aborting
could not detach HEAD

git pull Origin masterを実行したときの同様のエラー

 * branch            master     -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
    includes/resources/moduledata/12/_Fr4_02_Invention_IPA_SR_la-Fête.pdf
Please move or remove them before you can merge.
Aborting

私の.gitignoreファイル:

→ cat .gitignore 
.htaccess
bower_components/

このファイルは常に表示され、ファイルシステムから削除すると、gitはこのファイルを削除したと表示しますが、他のメッセージでは追跡されていないことを示します。どのようにして、追跡と追跡を同時に解除できますか?

18
randomor

レポの全体像がなければ、以下は何よりも推測にすぎませんが、状況を説明するかもしれません。あなたの履歴が次のように見えるとしましょう:

A -- C [Origin/master]
  \ 
   B [HEAD, master]

あなたが書く:

このファイルは常に表示されており、ファイルシステムから削除すると、gitはこのファイルを削除したと表示しますが、他のメッセージでは追跡されていないと表示されます。

私はあなたが走ったかもしれないと推測しています

git rm --cached <file-in-question>

コミットB;でその削除をコミットしました。そのため、ファイルはローカルリポジトリで追跡されなくなりますが、作業ツリーには引き続き存在します。

それまでの間、上流ブランチはコラボレーターの1人からコミットCを受け取りました。この場合、<file-in-question>はバージョン管理からnot削除されました。影響を与えようとしているもの

git pull --rebase

このようなものです:

 A -- C [Origin/master]
       \ 
        B' [HEAD, master]

ただし、メッセージにあるように、

[...]追跡されていない作業ツリー[ファイル]は、チェックアウトによって上書きされます。

確かに、コミットC(その上でBを再生するため)を巻き戻すと、<file-in-question>(コミットCから)のリビジョンがチェックアウトされます。同じ名前の追跡されていないファイルが既に存在する作業ツリー。その追跡されていないファイルの内容は価値があるかもしれません。そのファイルを別のバージョンで上書きしたくない場合があります。そのため、Gitは追跡を停止し、何が間違っているのかを通知します。

編集:状況を再現する小さな例です...

cd ~/Desktop
mkdir test
cd test
git init
touch README.md
git add README.md
git commit -m "add README"

# simulate a remote branch moving ahead by one commit
# (that doesn't remove the README)
git checkout -b Origin_master
printf "This is a README.\n" > README.md
git add README.md
git commit -m "add description in README"

# remove the README and create a new commit on master
git checkout master
git rm --cached README.md
git commit -m "remove README"

# simulate an attempt to rebase master to its "upstream" branch, Origin_master
git rebase --onto Origin_master master

その最後のコマンドは次を出力します:

First, rewinding head to replay your work on top of it...
error: The following untracked working tree files would be overwritten by checkout:
    README.md
Please move or remove them before you can switch branches.
Aborting
could not detach HEAD

実行することをお勧めします

git fetch
git log --stat Origin/master..master -- <file-in-question>

そのようなことが起こったかどうかを確認します。

15
jub0bs

これは、ファイル名の大文字と小文字の変更が原因で発生することもあります。私は同じ問題を抱えていましたが、これが私にとってそれを解決したものです。

git config core.ignorecase true

MacまたはPCに当てはまります。

代替ソリューション: 次の追跡されていない作業ツリーファイルは、チェックアウトによって上書きされます

29
MikeHall

追跡されていないファイルをすべて削除する(注意):

git clean  -d  -fx ""
5
Abhishek Goel