如何完全忽略到目前为止我使用 git 在版本控制下跟踪的目录?

发布于 2024-12-04 13:04:50 字数 637 浏览 0 评论 0原文

我正在使用 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 进行部署时,这些文件夹(在远程计算机上)就不会受到影响。

I am using Ruby on Rails, the Capistrano gem and git. I would like to do not put anymore under version control some directories that until now I was tracking.

For my application I have a file system structure like the following:

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

To accomplish that I aim, I changed the .gitignore file and added to it the following lines:

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

However, if I check what directories are under version control, I see that those I would like to ignore are still tracked. So, when I deploy with Capistrano to the remote server the content of those directories is still changing.

How can I definitely ignore those directories?


In few words, what I would like to do is to do not change public/aaa directories and files on the remote machine (and, thus, to do not track those with git on my local machine) so that when I deploy with Capistrano those folders (on the remote machine) are untouched.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半步萧音过轻尘 2024-12-11 13:04:50

您需要在它们从源代码管理中消失之前将其删除。它们仍然是您的 git 存储库的一部分,因此 git 将继续关注它们。

git rm -r --cached public/aaa

-r 告诉 git 删除目录(就像控制台中的 rm -r 一样),而 --cached 告诉 git 保留文件(s),只需将其从存储库中删除即可。

You'll need to remove them before they'll disappear from source control. They're still part of your git repo, so git is going to continue paying attention to them.

git rm -r --cached public/aaa

The -r tells git to remove the directory (just like rm -r in the console) and --cached tells git to leave the file(s), just remove it from the repo.

千鲤 2024-12-11 13:04:50

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

您可以使用
递归地执行此操作
查找 ./folder/ -type f | xargs git update-index --assume-unchanged

You could use git update-index --assume-unchanged <filename>. This will keep the files around, but will no longer track their changes.

You can do this recursively with
find ./folder/ -type f | xargs git update-index --assume-unchanged

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文