Git:推送后删除文件

3
我在我的工作站上有一个本地代码库,远程代码库存储在服务器上(phpfog.com)。我的应用程序会生成缓存文件,我希望每次有人提交代码时将这些文件从远程代码库中删除:这是否可能?如果可以,该如何实现?需要说明的是:这些文件已经被.gitignore忽略了(也许还有其他方法来解决这个问题)。
我听说过git挂钩,但不知道如何使用它们。
谢谢。
编辑:我想执行git clean(删除未跟踪的文件),但是要在远程代码库上并且每次提交代码时都执行。这些文件是由应用程序产生的,不能通过.gitignore来解决这个问题(事实上,它们已经被.gitignore忽略了)。
2个回答

4

我认为您需要的是post-receive钩子。

只需在远程服务器上添加一个bash脚本来清理所有缓存文件,并将其指定为post-receive钩子。有关更多信息,请参见http://book.git-scm.com/5_git_hooks.html


使用这个方法可以解决问题,但是让文件系统维护依赖于Git听起来完全不合适。 - sciritai
sciritai:我已经在下面解释了。这不是“文件系统维护”,而是与推送直接相关的操作,没有其他任何操作。 - A123321
Alexandr:谢谢你的回答。这正是我所需要的。现在,我需要想办法在服务器上更改git设置(但我不确定是否可能,希望技术支持能尽快回复)。 - A123321

1
为什么有些人要推送那些最好被忽略的文件呢?只需使用git rm --cached命令将它们删除,然后提交和推送。确保它们已经正确地添加到了.gitignore文件中,这样就可以确保其他人不会再次意外地添加并推送这些文件了。

1
希望我没有误解你的意思。但是缓存文件是在应用程序在服务器上运行时生成的。当然,在我的工作站上提交时,我会忽略它们。但是我也需要删除源自远程的缓存文件。谢谢回答。 - A123321
2
在这种情况下,您应该更新应用程序以对缓存文件执行维护。如果您正在谈论在生产服务器上清理文件,那么这听起来不像是关于git的问题。 - sciritai
应用程序如何知道它已被更新?Git 重写其代码,这个新代码可能无法与旧缓存一起工作,因此我希望在推送后有一种方法可以删除 gitignore 中提到的文件夹的内容。 - A123321
你的项目中的 .gitignore 文件是否已经提交到了 git?如果文件在 .gitignore 中被指定,它们就不需要从 git 索引中删除,甚至不会被添加进去。 - Thong Kuah
1
是的,它们在.gitignore中。每次应用程序运行时都会生成它们,即使在服务器上也是如此。它们永远不会提交到存储库。我需要在每次推送时删除它们。 它们不是存储库的一部分。我需要使用TortoiseGit中的“清理”功能来删除它们 - “删除未跟踪的文件”。 - A123321
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接