【问题标题】:git status -> Show files that will be added (staged) in subdirectoriesgit status -> 显示将在子目录中添加(暂存)的文件
【发布时间】:2012-10-01 22:31:31
【问题描述】:

假设我在一个文件夹中启动了一个 git 存储库,并且其中有几个子目录。

我有几个 globbing 模式 .gitignore 来排除子目录中的文件。但是,当我执行git status 在暂存任何内容之前 时,git status 仅显示将要添加的子文件夹的名称,而没有具体说明将添加(暂存)每个子目录中的哪些文件,如果我做git add .

但有趣的是,git status 明确说明了在我使用 git add . 暂存文件之后将提交的文件。

是否有要求git status 明确说明将暂存的文件的文件?

【问题讨论】:

    标签: git version-control


    【解决方案1】:

    试试:

    git status -u
    

    或长格式:

    git status --untracked-files
    

    这将显示未跟踪目录中的单个文件。

    这里是git-status man page-u选项的详细描述:

    -u[<mode>]
    --untracked-files[=<mode>]

    显示未跟踪的文件。

    mode参数是可选的(默认为all),用于指定对未跟踪文件的处理;不使用-u时,默认为normal,即显示未跟踪的文件和目录。

    可能的选项是:

    • no - 不显示未跟踪的文件
    • normal - 显示未跟踪的文件和目录
    • all - 还显示未跟踪目录中的单个文件。

    可以使用git-config(1) 中记录的status.showUntrackedFiles 配置变量更改默认值。

    【讨论】:

      【解决方案2】:

      你可以简单地使用

      git add --dry-run .
      

      在存储库的根目录中,它为您提供了在考虑 .gitignore 时将添加的任何子目录中的任何文件的列表。

      【讨论】:

        【解决方案3】:

        git ls-files -o --exclude-standard

        工作树中未暂存 (-o) 且不会被 git add (--exclude-standard) 忽略的每个路径。

        【讨论】:

          【解决方案4】:

          如何将.gitignore 文件放在您的子目录中,而不是沿着

          # Ignore everything in this directory
          *
          # Except these file
          !.gitignore
          !file1
          !file2
          !file3
          

          【讨论】:

          • 我的.gitignore 中没有任何与您发布的内容相似的内容(即忽略目录或子目录,但有例外)。另外,这有什么关系?顺便说一句,git status 使用git add . 返回将在暂存后正确提交的文件列表。
          • 我知道你不知道。从根目录.gitignore 中删除目录,然后在您的子目录中添加这个.gitignore - 您可以拥有多个。他们筑巢
          【解决方案5】:

          很有可能是由于行结束。解决方案:

          git config --global core.autocrlf true
          

          但是不要只运行这个命令,在执行它之前验证。使用git diff,如果大部分文件显示没有区别,那是由于行结束。好好利用吧。

          【讨论】:

            【解决方案6】:

            使用 git 命令 git ls-文件 -o 列出未跟踪的文件

            改为 -o 使用 -C --缓存 在输出中显示缓存文件(默认)

            -d --删除 在输出中显示已删除的文件

            -m - 修改的 在输出中显示修改后的文件

            【讨论】:

            • 这个问题专门用于显示将添加哪些文件,同时考虑 .gitignore。您的回答忽略了 .gitignore。
            猜你喜欢
            • 1970-01-01
            • 2014-09-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-28
            • 1970-01-01
            • 2016-04-13
            相关资源
            最近更新 更多