如何跟踪嵌套在未跟踪文件夹中的文件?

时间:2019-04-10 16:01:22

标签: git github github-for-mac

我们当前的git设置基于白名单,因此默认情况下会忽略所有内容,然后根据需要添加目录。对于新的存储库来说,这很好用,但是由于我们有很多跟踪/未跟踪的文件,因此开始引起问题。

以下是我们的.gitignore的示例:

*
!/example.txt
!/example2.txt

我现在正在尝试将一个文件添加到git中,该文件存在于忽略的文件夹a中,该文件的路径为:/a/b/c/file.txt。我的问题是,如何才能不忽略该文件,而忽略/ a文件夹中的其他所有内容?

到目前为止,我发现将其添加到.gitignore中是可行的:

!/a/
!/a/b/
!/a/b/c/
!/a/b/c/file.txt

但是,看起来有点混乱。我本来以为只要在.gitignore中加入!/a/b/c/file.txt就可以摆脱困境,但这似乎由于某些原因而行不通?

作为参考,我必须运行git rm --cached -r .git add .才能使.gitignore更改生效。

任何帮助将不胜感激-谢谢!

2 个答案:

答案 0 :(得分:2)

我认为您需要添加!*/。这会将目录列入白名单。这是一个示例忽略。

# ignore everything
*
# don't ignore directories
!*/
# whitelist files with extension
*.xyz

# blacklist individual file
a/b/c.xyz

其他选项是将目录中的所有内容都列入黑名单,并将一个文件列入白名单

a/b/c/*
!a/b/c/file.txt

答案 1 :(得分:0)

git add --force可用于添加忽略的文件:

git add -f a/b/c/file.txt

添加文件后,该文件将被跟踪,不再被忽略。