【问题标题】:Git add all subdirectoriesGit添加所有子目录
【发布时间】:2013-01-15 06:20:09
【问题描述】:

我在将文件夹及其所有子目录添加到我的 git 存储库时遇到问题。在进行了一些谷歌搜索后,我意识到这是一个非常受欢迎的问题,并且我尝试了每个建议都没有运气,特别是来自 man page on git-add 的建议。我什至尝试了git add -A,但没有成功。为简单起见,假设我将我的 git 存储库初始化为 Dir1。然后我有以下文件目录结构。

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

我的真实文件有跨越 5-6 层深的子目录,那么是否有一个 git 命令可以将每个子目录中的所有文件添加到我的存储库中?现在,当我从手册页 git add Dir1/\* 提出建议时,我可以在我的仓库中看到 Dir2,但它显示为绿色文件夹,我无法打开它,这让我相信所有文件Dir2 中的 /folders 未添加。任何帮助将不胜感激。我是一个新的 git 用户(使用它不到一周),所以尽量保持你的说明处于初学者的水平。

【问题讨论】:

  • git add 的任何目录都是自动递归的。在 repo 的顶层使用 git add . 应该在其中添加所有内容。如果没有,.gitignore 正在发挥作用(本地或全球)。
  • 你检查.gitignore了吗?不知何故,您的目录可能被忽略了。
  • git status --ignored 的输出是什么?
  • 只是为了帮助看到这个问题的其他人,如果您创建的目录中没有任何文件,则它们不是git add .添加的您必须在git目录中添加一些文件跟踪他们。

标签: git repository git-add


【解决方案1】:

如果某人 git add . 不起作用(在我的情况下也是如此),请使用包含所有子目录中的所有文件的 git add ./*。我的目录结构是:

MainDirectory
|_.git
|_README
|_folder1
|   |_file1
|   |_file2
|   |_subfolder1
|   |    |_file3
|   |    |_file4
|   |_subfolder2
|        |_file5
|        |_file6
|_folder2 
|   |_file1
|   |_file2
|   |_subfolder1
|   |    |_file3
|   |    |_file4
|   |_subfolder2
|        |_file5
|        |_file6
|_otherfiles

git add ./* 将所有内容都包含在一个或更多级别深度内,而 git add . 仅添加当前级别的文件。

【讨论】:

    【解决方案2】:

    做,

    git add .
    

    在存储库的根目录中。它会添加一切。如果你做git add *,它只会添加*指向的文件。单点表示目录。

    如果您的目录或文件在上述命令之后没有添加到 git index/repo 中,请记得检查它是否在 .gitignore 文件中被 git 标记为忽略。

    【讨论】:

    • 刚刚试过这个。还是行不通。我做了 git add 。 git commit git push origin master 我错过了什么吗?
    • 假设你的文件在 Dir1 下,你应该做cd Dir1; git init; git add . ; git commit; 没有其他要求。如果您有 .gitignore 忽略某个目录中的文件并且仍想添加它们,则需要执行 git add -f . 而不是 git add .
    • 我试过“git add”。但它没有用。第二天,我回去尝试,一切都“正常工作”,所以谢谢!它一定是那些在灯亮后消失的午夜虫子之一。
    • 混帐添加。不起作用,它不会递归地添加子目录及其内容。
    • 您可能需要打开一个新的命令窗口才能使其始终如一地工作。
    【解决方案3】:

    简单的解决方案:

    git rm --cached directory
    git add directory
    

    【讨论】:

      【解决方案4】:

      如果子目录本身是 git 存储库,您也可能会遇到问题 - 即 .has 有一个 .git 目录 - 请通过 ls -a 检查。

      要删除,请转到子目录和rm .git -rf

      【讨论】:

      • 当子目录包含 .git ye​​s 时出现奇怪的问题 :) for dir in find . -name ".git";做 rm -rf $dir;完成
      【解决方案5】:

      我之前看到过这个问题,当我尝试添加的(子)文件夹的名称以“_Something_”开头时

      我删除了下划线,它起作用了。检查您的文件夹是否包含可能导致问题的字符。

      【讨论】:

        【解决方案6】:

        很可能是 .gitignore 文件s 在起作用。请注意,.gitignore 文件不仅可以出现在 repo 的根级别,还可以出现在任何子级别。您可以尝试从根级别找到它们:

        找到 . -name ".gitignore"

        然后检查结果,看看哪些可能会阻止您的子目录被添加。

        也可能涉及子模块。检查“.gitmodules”文件的违规目录。

        【讨论】:

          【解决方案7】:

          也很吃力,但输入正确

          git add -f ./JS/*

          其中 JS 是我的文件夹名称,其中包含子文件夹和文件

          【讨论】:

          • 它可以添加被忽略的文件并在存储库中做一团糟。
          • git add ./JS 是正确的用法。它将添加目录中的所有文件以及仍然关心忽略文件的所有子目录。
          【解决方案8】:

          我不能确定是否是这种情况,但对我来说似乎是个问题是在某些子目录中有 .gitignore 文件。同样,我不能保证这一点,但在这些被删除后一切正常。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-11-06
            • 1970-01-01
            • 2011-11-09
            • 2015-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多