首页 > 解决方案 > .gitignore 除了

问题描述

我有一个充满文件和子目录的大目录。

其中两个或三个文件是主目录中的 excel 电子表格,我需要定期往返于家中。

我的想法是创建一个仅包含这几个文件的 git 存储库,然后使用 git 通过 github 上的私有存储库来回传递文件​​。

我无法将这些文件移动/隔离到他们自己的其他目录中,它们需要留在原处(在数百个其他文件中)。因此,如果我在该目录上创建一个存储库,它将包含很多我不想包含的文件。就像我需要使用白名单创建存储库一样,“排除除 file1.xls、file2.xls 之外的所有内容”。

我的 git 技能很弱。谁能建议最干净的方法来做到这一点,或者是否有更惯用的方法来做到这一点?

标签: gitgithub

解决方案


正如@matt 指出的那样,Git 只“查看您明确要求它查看的文件”。一个简单的解决方案是只签入您想要的文件。

$ git add file1.xls file2.xls
$ git commit -m "Here are the Excel files"

如果您希望能够使用 签入所有内容$ git add .,或者只是避免意外添加其他文件之一,一种技术是通过 忽略所有内容*,然后包含您的特定文件或匹配的文件扩展名。

这是一个示例.gitignore

# Ignore everything
*
# Include specific files excluded by a previous pattern 
!file1.xls

如果您可以签入所有 Excel 文件,请替换file.xls为。*.xls

从文档:

!否定模式的可选前缀“ ”;任何被先前模式排除的匹配文件都将再次包含在内。如果排除了该文件的父目录,则无法重新包含该文件。出于性能原因,Git 不会列出排除的目录,因此包含文件的任何模式都无效,无论它们是在哪里定义的。对于以文字“ ”开头的模式,例如“ ”,\在第一个“ ”之前放置一个反斜杠(“ ”) 。!!\!important!.txt

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


推荐阅读