1. ホーム
  2. git

[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"

2022-01-29 13:20:48

質問

そこで、.gitignore ファイルにフォルダを追加してみました。

をしたら git status と表示されます。

# On branch latest
nothing to commit (working directory clean)

しかし、ブランチを変更しようとすると、次のようになります。

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

私の .gitignore ファイルはこのようになっています。

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

これらのファイルを削除せずにブランチを切り替えるには、どうすればよいのでしょうか?

変更を加えた場合、それらのファイルに影響を及ぼしますか?言い換えれば、その後このブランチに戻った場合、最新のコミットまですべて完璧になるのでしょうか?

これらのファイルを失いたくないのですが、追跡されたくないだけです。

解決方法は?

すでにコミットされているファイルを無視したいようですが、どうすればよいですか?.gitignoreはすでにリポジトリにあるファイルには効果がないので、それらを削除するには git rm --cached . その --cached を指定すると、作業コピーに影響を与えず、次にコミットするときに削除されたものとしてマークされるだけです。ファイルがリポジトリから削除された後は、.gitignoreによって再び追加されることはありません。

しかし、この.gitignoreには別の問題があります。ワイルドカードを過剰に使用しているため、期待したよりもマッチングが悪くなっているのです。代わりに、.gitignore を変更して次のようにしてみてください。

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/