从Git存储库中删除文件而不从本地文件系统中删除它

我的初始提交包含一些日志文件。 我已将*log添加到我的.gitignore ,现在我想从我的存储库中删除日志文件。

git rm mylogfile.log

将从存储库中删除文件,但也将从本地文件系统中删除它。

如何在删除文件本地副本的情况下从存储库中删除此文件?


#1楼

要从repo中删除整个文件夹(如Resharper文件),请执行以下操作:

git rm -r --cached folderName

我已经提交了一些resharper文件,并且不希望这些文件持续存在于其他项目用户。


#2楼

man文件

当给出--cached ,分阶段内容必须匹配分支的尖端或磁盘上的文件,从而允许仅从索引中删除文件。

因此,对于单个文件:

git rm --cached mylogfile.log

并为一个目录:

git rm --cached -r mydirectory

#3楼

更通用的解决方案:

  1. 编辑.gitignore文件。

    ECHO mylogfile.log >> .gitignore

  2. 从索引中删除所有项目。

    git rm -r -f --cached .

  3. 重建索引。

    git add .

  4. 进行新的提交

    git commit -m "Removed mylogfile.log"


#4楼

Git允许您通过假设它们不变来忽略这些文件。 这是通过运行git update-index --assume-unchanged path/to/file.txt命令来完成的。 一旦标记文件,git将完全忽略该文件的任何更改; 它们不会在运行git status或git diff时出现,也不会被提交。

(来自https://help.github.com/articles/ignoring-files

因此,不要删除它,而是永远忽略对它的更改。 我认为这只适用于本地,所以除非他们运行与上面相同的命令,否则同事仍然可以看到它的变化。 (仍然需要验证这一点。)

注意:这不是直接回答问题,而是基于其他答案的评论中的后续问题。


#5楼

您还可以根据.gitignore从存储库中删除文件,而不从本地文件系统中删除它们:

git rm --cached `git ls-files -i -X .gitignore`

或者,在Windows Powershell上:

git rm --cached $(git ls-files -i -X .gitignore)

#6楼

根据我的答案: https//stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository

要仅从git存储库中删除文件夹/目录或文件,而不是从本地尝试3个简单的步骤。


删除目录的步骤

git rm -r --cached File-or-FolderName
git commit -m "Removed folder from repository"
git push origin master

在下次提交中忽略该文件夹的步骤

要在下次提交时忽略该文件夹,请在root中创建一个名为.gitignore的文件,并将该文件夹名称放入其中。 您可以根据需要添加任意数量

.gitignore文件将如下所示

/FolderName

删除目录


#7楼

以上答案对我不起作用。 我使用filter-branch删除所有提交的文件。

使用以下命令从git存储库中删除文件:

git filter-branch --tree-filter 'rm  file'

使用以下命令从git存储库中删除文件夹:

git filter-branch --tree-filter 'rm -rf directory'

这将从所有提交中删除目录或文件。

您可以使用以下命令指定提交:

git filter-branch --tree-filter 'rm -rf directory' HEAD

或范围:

git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD

要将所有内容推送到远程,您可以:

git push origin master --force

#8楼

如果您只想解开文件而不是从本地和远程仓库中删除,请使用以下命令:

git update-index --assume-unchanged  file_name_with_path

#9楼

此外,如果您提交了敏感数据(例如包含密码的文件),则应将其从存储库的历史记录中完全删除。 以下是解释如何执行此操作的指南: http//help.github.com/remove-sensitive-data/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值