如何完全忽略目录,直到现在我在版本控制下使用git跟踪



我正在使用Ruby on Rails, Capistrano gem和git。我不想再把版本控制下的一些目录,直到现在我一直在跟踪

对于我的应用程序,我有如下的文件系统结构:

...
.gitignore
/public/aaa/000/001
/public/aaa/000/002
/public/aaa/000/003
/public/aaa/000/...

为了实现我的目标,我更改了.gitignore文件并添加了以下行:

# Ignoring "/public/aaa/*" directories
public/aaa/

然而,如果我检查哪些目录处于版本控制之下,我看到那些我想忽略的目录仍然被跟踪。因此,当我将Capistrano部署到远程服务器时,这些目录的内容仍然在变化。

我怎样才能完全忽略这些目录?


简而言之,我想做的是不改变远程机器上的public/aaa目录和文件(因此,不跟踪我本地机器上的git),这样当我使用Capistrano部署时,这些文件夹(在远程机器上)是不受影响的

您需要在它们从源代码管理中消失之前删除它们。它们仍然是git仓库的一部分,所以git会继续关注它们。

git rm -r --cached public/aaa

-r告诉git删除目录(就像控制台的rm -r一样),--cached告诉git留下文件,只是从repo中删除它。

您可以使用git update-index --assume-unchanged <filename>。这将保留文件,但不再跟踪它们的更改。

你可以用
递归地做到这一点find ./folder/ -type f | xargs git update-index --assume-unchanged

最新更新