如何最终通过.gitignore忽略所有子目录中的文件

如何最终通过.gitignore忽略所有子目录中的文件,git,gitignore,git-add,rabbitvcs,Git,Gitignore,Git Add,Rabbitvcs,我知道有很多重复的问题,但我完全糊涂了。我应该承认我对Git完全是新手。我使用的是RabbitVCS,但是,我使用gedit手动编辑.gitignore文件。这就是我所做的: 我已经在Github中创建了一个存储库 我用RabbitVCS在本地计算机上克隆了它 我已将project的所有文件和文件夹粘贴到存储库中 我在存储库的根目录中创建了一个.gitignore文件,其中包含以下模式:*~ 我还没有提交任何东西 我想忽略根目录和子目录中的所有~和其他临时文件。它忽略根目录中的所有文件,但在子目

我知道有很多重复的问题,但我完全糊涂了。我应该承认我对Git完全是新手。我使用的是RabbitVCS,但是,我使用gedit手动编辑.gitignore文件。这就是我所做的:

  • 我已经在Github中创建了一个存储库
  • 我用RabbitVCS在本地计算机上克隆了它
  • 我已将project的所有文件和文件夹粘贴到存储库中
  • 我在存储库的根目录中创建了一个
    .gitignore
    文件,其中包含以下模式:
    *~
  • 我还没有提交任何东西

    我想忽略根目录和子目录中的所有
    ~
    和其他临时文件。它忽略根目录中的所有文件,但在子目录中不起作用。当我想使用RabbitVCS提交时,我可以在提交窗口中看到它们

    我很困惑,因为在Bazaar中,我们首先添加文件,然后提交它们。但它是Git,似乎我们应该只承诺添加新文件!是这样吗

    我做错了什么?我应该先提交吗?

    来自:

    前导“**”后跟斜杠表示在所有目录中都匹配。例如,“**/foo”匹配文件或目录“foo”,与模式“foo”相同。“**/foo/bar”与目录“foo”下的任何位置的文件或目录“bar”匹配

    正如Jan Hudec所写,您只需使用
    *~

    $ mkdir test
    $ cd test
    $ git init
    Initialized empty Git repository in /tmp/test/.git/
    $ echo '*~' > .gitignore
    $ mkdir -p some/deep/directory
    $ touch some/deep/directory/test.txt
    $ touch some/deep/directory/test.txt~
    $ git add some/deep/directory/test.txt*
    The following paths are ignored by one of your .gitignore files:
    some/deep/directory/test.txt~
    Use -f if you really want to add them.
    fatal: no files added
    

    你的意思是我应该使用
    ***~
    @阿里:不,你应该只用
    *~
    <代码>**/foo..,与模式
    foo
    相同。您做得对<代码>*~忽略所有以
    ~
    结尾的文件。因为不包含
    /
    的模式在文件名上匹配,所以包含
    /
    的模式在路径上匹配。您是如何想到需要做其他事情的?在git中,您必须添加所有要提交的更改。但是,
    .gitignore
    取自工作树。它在不提交的情况下生效。@JanHudec我可以在RabbitVCS的提交窗口中看到被忽略的文件。这就是为什么我认为我需要做点别的。在Bazaar中,当我忽略一个文件时,它不会显示在“添加和提交”窗口中。我想知道Bazaar和Git之间是否有我不理解的区别。您是否也在控制台上的
    Git status
    输出中看到了它们?如果目录中有一些未版本化的文件,但没有版本化的文件,它只显示目录。但如果目录中只有被忽略的文件,则不应显示该文件。