如何从git中删除二进制文件

时间:2019-01-04 13:38:27

标签: git

使用分支并进行合并时出现错误

$ git merge FrontEndHtmlChecks
warning: Cannot merge binary files: docker/databases/ibdata1 (HEAD vs. FrontEndHtmlChecks)
warning: Cannot merge binary files: docker/databases/ib_logfile0 (HEAD vs. FrontEndHtmlChecks)

我不得不从git中排除这些二进制文件,所以我试图从git中删除它们,但出现错误:

$ git rm docker/databases/ibdata1
docker/databases/ibdata1: needs merge
rm 'docker/databases/ibdata1'
$ git rm docker/databases/ib_logfile0
docker/databases/ib_logfile0: needs merge
rm 'docker/databases/ib_logfile0'

所以我无法合并。

如何修复?

修改的#2块: 我中止了合并并删除了master分支上的文件。我尝试再次合并,但出现错误:

git merge FrontEndHtmlChecks
CONFLICT (modify/delete): docker/databases/ibdata1 deleted in HEAD and modified in FrontEndHtmlChecks. Version FrontEndHtmlChecks of docker/databases/ibdata1 left in tree.

检查到FrontEndHtmlChecks我找不到在提交和推入thery之前如何删除这些文件... 怎么办?

2 个答案:

答案 0 :(得分:2)

您可以使用Resolving a Git conflict with binary files

中提到的选项

或者您可以检查.gitignore文件。您可以在.gitignore的帮助下隐藏这些文件。
您只需要在该文件下提及不需要的文件即可。

示例
.gitignore文件(位于代码库的根路径中)

docker/databases/* #This will ignore all files under docker/databases directory
*.iml #This will ignore IntelliJ (Idea) iml files.
*.log
.settings
.classpath
.project

Ref:https://git-scm.com/docs/gitignore

答案 1 :(得分:2)

如果您已经签入文件,则无法将它们添加到.gitignore中。

您可能需要告诉git删除曾经在源代码管理中的所有缓存文件,即

git rm --cached docker/databases/ibdata1

请参阅"git rm --cached x" vs "git reset head -- x"?