以下未跟踪的工作树文件将被checkout覆盖

所以我添加了一个文件夹到我的.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/

警告:它会删除未跟踪的文件,所以对于提出的问题这不是一个好的答案。

我也打了这个消息。 在我的情况下,我不想保留这些文件,所以这为我工作:

混帐2.11和更新

git clean  -d  -fx .

旧的混帐

git clean  -d  -fx ""

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x意味着被忽略的文件也被删除以及git未知的文件。

  • -d表示除了未跟踪的文件以外,还要除去未跟踪的目录。

  • -f需要强制它运行。


  • 警告:这将删除未编入索引的本地文件

    只需强制它: git checkout -f another-branch

    链接地址: http://www.djcxy.com/p/3277.html

    上一篇: The following untracked working tree files would be overwritten by checkout

    下一篇: How do I revert all local changes in Git managed project to previous state?