我最初承诺中所包含的一些记录文件。我加入 *log.gitignore, 现在我想要删除的日志文件从我的存储库。

git rm mylogfile.log

将去除文件的储存库,而且还会将其从当地文件系统。

我怎么可以删除这个文件从仓库 没有 删除我的地方复制的文件?

有帮助吗?

解决方案

人文件

  

--cached给出,分级内容具有相匹配的分支的任一末端或磁盘上的文件,从而允许从刚刚索引中删除该文件。

因此,对于单个文件:

git rm --cached mylogfile.log

和用于单个目录:

git rm --cached -r mydirectory

其他提示

要从回购(如ReSharper的文件)中删除整个文件夹,这样做:

git rm -r --cached folderName

我犯了一些ReSharper的文件,并没有想那些坚持对其他项目的用户。

您也可以删除根据您的.gitignore库文件,而无需从本地文件系统中删除:

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

或者,可替代地,在Windows Powershell的:

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

按这里我的回答: https://stackoverflow.com/questions/6313126/how-to-remove-a-directory -in-MY-github上的仓库

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


<强>步骤以删除目录

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

<强>步骤来忽略下一个提交该文件夹

  

要忽略来自下一个提交该文件夹使在根一个文件名为的的.gitignore   并把该文件夹的名字进去。你可以把你想要尽可能多的

<强>的.gitignore 文件将看起来像这样

/FolderName

“删除目录”

此外,如果已经COMMITED敏感数据(例如包含密码的文件),则应该完全从库的历史中删除。这里有一个指南,说明如何做到这一点: http://help.github.com/remove-sensitive-data/

一个更通用的解决方案:

  1. 编辑 .gitignore 文件。

    ECHO mylogfile.log >> .gitignore

  2. 删除所有的项目索引。

    git rm -r -f --cached .

  3. 重建指数。

    git add .

  4. 做出新的承诺

    git commit -m "Removed mylogfile.log"

  

混帐使您可以通过假定它们是不变的忽略这些文件。这个   通过运行git update-index --assume-unchanged path/to/file.txt命令来完成。一旦将文件标记为这样,Git会   完全忽略对文件进行任何更改;他们不会显示出来的时候   运行git状态或git的差异,也不会永远被提交。

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

因此,不删除它,但永远忽略更改。 我想,这只能在本地,所以同事们仍然可以看到更改,除非它们运行相同的命令如上。 (仍需验证此虽然。)

请注意:这是没有直接回答这个问题,而是基于跟进其他答案的评论问题

如果您只想untrack一个文件,而不是从本地和远程回购删除,然后使用这个命令:

git update-index --assume-unchanged  file_name_with_path

以上答案不是为我工作。我用 filter-branch 删除所有提交的文件。

删除的文件从一个混帐库:

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

删除一个文件夹,从个混库:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top