所以我在. 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/*
我如何使这个工作,所以我可以切换分支而不删除这些文件?
如果我进行更改,它会影响这些文件吗?换句话说,如果我之后回到这个分支,那么一切都是完美的,直到我最近的提交?
我不想丢失那些文件,我只是不希望它们被跟踪。
我也点击了这条消息。在我的情况下,我不想保留文件,所以这对我有用:
git clean -d -f .
git clean -d -f ""
如果您还想删除 git 忽略的文件,请执行以下命令。
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
您似乎希望忽略这些文件,但它们已经被提交了。 .gitignore 对已存在于 repo 中的文件没有影响,因此需要使用git rm --cached
删除它们。 --cached
将阻止它对您的工作副本产生任何影响,它将在下次提交时标记为已删除。从 repo 中删除文件后,.gitignore 将阻止再次添加它们。
但是你的. gitignore 有另外一个问题,你过度使用通配符并导致它匹配的次数少于预期。而是让我们改变. gitignore 并试试这个。
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/