我有一个 git 存储库,其中包含一些 XSLX 文件。我偶尔会使用 LibreOffice 编辑它们。有时 LibreOffice 不会删除锁定文件 (
./folder/.~lock.filename.xslx#
)。这会导致这些文件在每个 git status
上都被视为新文件。
我希望 git 忽略它们。我在
.gitignore
中尝试了以下方法,但似乎不起作用:
*.~lock*
.~lock*
*/.~lock*
有什么想法吗?
更新
还尝试过:
.~lock.*#
如http://lists.freedesktop.org/archives/libreoffice-commits/2012-December/040253.html所示 没有成功。
测试
.gitignore
、的模式
git ls-files -iocx '.~lock*'
查看是否有任何缓存的、暂存的、跟踪的、添加的文件匹配忽略模式(因此可能已错误添加),
git ls-files -ic --exclude-standard
正如 @NevikRehnel 指出的那样,git 不会忽略跟踪的文件。 要取消跟踪文件,
git rm --cached path/to/it
这会将其从下一次提交中删除,但是将文件从早期历史记录中删除的唯一方法是使用例如重写
git commit --amend
(如果这只是最后一次提交),git rebase -i
(如果您只有几项任务要做)或 git filter-branch
(用于批量工作)。 这些实际上都不会改变旧历史记录,它们添加新历史记录并切换任何当前分支来引用它。 旧历史仍然存在,并且没有其他裁判被移动。
答案(正如您在评论中发现的那样):在 *.~lock*
文件中添加
.gitignore
效果很好。
此外,如果使用 Git for Windows,请务必将您的
.gitignore
文件命名为 .gitignore
,而不是 .gitignore.txt
,这是 Windows 在使用 Windows 资源管理器重命名或创建文件时尝试强制使用的名称。为此,请使用文本编辑器保存它,而不是尝试在 Windows 资源管理器中重命名它(在此处查看更多信息)。
如果您不小心在末尾添加了
.txt
扩展名,它将无法工作,并且 git 将无法将文件正确读取为 .gitignore
文件。
有关更详细的 gitignore 格式说明,以及了解如何指定要忽略的文件和文件夹的语法,请参阅我的 eRCaGuy_dotfiles
存储库中的我的
.gitignore
文件中的注释和示例。
如果您尝试了上述解决方案但不起作用,请查看此链接,它帮助我解决了问题: 不包括 LibreOffice 锁定文件
我实际上最终制作了一个 .gitignore 文件,尽管最初我一直打算将它们添加到 git“排除”文件中。不过我认为该解决方案也可能适用。
基本上的想法是关闭并重新启动 libreOffice 并“cd”出您的 git 存储库,然后再次返回到它以使更改生效。
我希望能帮助其他人解决这个问题。