【问题标题】:Recursively add the entire folder to a repository递归地将整个文件夹添加到存储库
【发布时间】:2013-07-18 14:08:28
【问题描述】:

我正在尝试向 GitHub 上的 master 分支添加一个分支,并将一个文件夹推送到该分支上。

分支的文件夹结构看起来像 - SocialApp/SourceCode/DevTrunk/SocialApp 和所有源代码文件都在最后一个文件夹中。

我正在使用以下 Git 命令:

git add *
git commit -m with the message
git push

这只会将第一个文件夹“SocialApp”推送到 GitHub 上,而忽略文件夹内的文件夹 SourceCode。我该如何解决这个问题?

【问题讨论】:

  • 哪里有文件? .gitignore 中没有忽略它们吗?
  • This is pushing only the first folder - git 根本不关心文件夹,只关心文件。请显示提交 - 您提交了一个子模块、一个符号链接或其他不是文件夹的东西
  • 我也遇到了同样的问题。我不认为这是一个问题,而只是预期的行为。令人惊讶的是有这么多解决方案。
  • 注意:当您的文件夹为空时,它们不会被跟踪。将一个空的 .keep 文件放在那里以保留空目录是一个好习惯

标签: git github


【解决方案1】:

从顶层目录调用的“git add *”和“git add SocialApp”都应该递归添加所有目录。

可能您在 SocialApp/SourceCode/DevTrunk/SocialApp 中没有文件,这就是原因。

尝试调用“touch SocialApp/SourceCode/DevTrunk/SocialApp/.temporary”(并检查 .gitignore),然后再次尝试 git add。

【讨论】:

  • 我不这么认为,我使用 git add * 并且遇到了同样的问题。
【解决方案2】:

检查.gitignore 文件,如果子目录被忽略。

然后再试一次

git add --all
git commit -am "<commit message>"
git push

【讨论】:

  • 请注意,这将不包括 .gitignore 中提到的文件。我通常手动添加它们或使用这样的批处理文件:for /R %%f in (*.*) do git add --force %%f(参见bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/…
  • 递归添加文件夹的整个树形结构,命令应该是git add --all :/
  • @JeroenWiertPluimers git add -f -all 用于添加 .gitignored 文件
  • @JasonHartley 您的评论可能是一个答案。谢谢!
  • 这不是在 git repo 中添加所有未暂存的文件,而不仅仅是当前文件夹吗?我不认为这是最初的问题所要问的。
【解决方案3】:

设置

  • 本地服务器上的本地存储库
  • 客户端通过局域网连接到本地服务器

更新(2020 年 9 月): 使用 foldername/\* 而不是 foldername/\\*

git add foldername/\*

到服务器...

git commit -m "comments..."
git push remote_server_name master

大多数情况下,用户会将 remote_server_name 指定为来源...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo

【讨论】:

  • 失败为fatal: pathspec 'foldername/\\*' did not match any files。曾担任git add foldername/\*
  • git add foldername/\\*git add --all有什么区别?
  • Danijel,前者将所有文件添加到一个文件夹中,而后者将所有文件添加到存储库中
  • git add -f foldername/\* - 为我工作。已添加-f
【解决方案4】:

这对我有用:

git add . --force

【讨论】:

  • 其他答案要求将文件列表计算为命令的参数,而这个没有,因此是更好的选择。
  • 绝对是最好的答案。如果您希望忽略仍然受到尊重,一个编辑会提到您不需要--force
【解决方案5】:

我遇到了这个花了我一点时间的问题,然后我想起了 git 不会存储空文件夹。请记住,如果您有要存储的文件夹树,请至少在该树的最深文件夹中放置一个文件,例如名为“.gitkeep”的文件,以影响 git 的存储。

【讨论】:

    【解决方案6】:

    在我的例子中,子目录中有一个 .git 文件夹,因为我之前在那里初始化了一个 git repo。当我添加子目录时,它只是将其添加为子项目,而不添加任何包含的文件。

    我通过从子目录中删除 git 存储库然后重新添加文件夹解决了这个问题。

    【讨论】:

    • 这为我解决了。我还必须重命名文件夹本身才能进行修复。
    【解决方案7】:

    如果你想递归地添加一个目录和其中的所有文件,转到你要添加的目录所在的目录。

    $ cd directory
    $ git add directoryname
    

    【讨论】:

    • cd 目录 git add *
    【解决方案8】:

    导航到您保存文件的文件夹
    如果您在 Windows 机器上,则需要启动 git bash,从中您将获得命令行界面,然后使用这些命令

    git init   //this initializes a .git  repository in your working directory
    
    git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded
    
    git add *   // this adds all the files to the initialialized git repository
    

    如果您在将文件合并到主文件之前对文件进行了任何更改,则必须通过执行来提交更改

    git commit -m "applied some changes to the branch"
    

    结帐后分支到主分支

    【讨论】:

    • 只回答提到init
    【解决方案9】:

    有时我想将我的 Web 服务源代码连同其客户端项目一起包含在内。它们都有一个单独的 git 存储库。 我其实习惯用命令添加所有文件:

    git add -A
    

    但由于某种原因,它只添加了文件夹。后来我发现服务器文件也有它的.git文件夹,所以这个命令不起作用。

    tl;dr:确保您要暂存的文件夹中没有 .git 文件夹。

    【讨论】:

    • 如果您不想删除 .git 文件夹,如何解决这个问题?
    • @rolls 见git submodules
    【解决方案10】:

    我只是用这个:

    git add app/src/release/*
    

    您只需指定要添加的文件夹,然后使用* 递归地添加里面的所有内容。

    【讨论】:

    • @kmiklas 很有趣。应该是git add app/src/release/.
    • git add --all app/src/release/ 为我工作;参考:git-scm.com/docs/git-add
    • @kmiklas 我喜欢这种方法。下次我会使用它。使用git add app/src/release/* 对我有用,但如果它会失败,为什么要冒险?下次我会更好地使用git add --all app/src/release/。谢谢!
    【解决方案11】:

    我也有同样的问题,我没有 .gitignore 文件。我的问题通过以下方式解决。这会占用所有子目录和文件。

    git add <directory>/*
    

    【讨论】:

      【解决方案12】:

      这对我有用

      git add -f *
      

      【讨论】:

        【解决方案13】:

        场景/解决方案 1:
        确保您的Folder / Sub-folder 不在.gitignore 文件中,无论如何。


        场景/解决方案 2:
        默认情况下,git add . 以递归方式工作。


        场景/解决方案 3:
        git add --all :/ 工作顺利,而 git add . 不(工作)。
        (@JasonHartley 的评论)


        场景/解决方案 4:
        我个人面临的问题是添加Subfolders or Files,这在多个Folders 之间很常见。

        例如:
        Folder/Subfolder-L1/Subfolder-L2/...file12.txt
        Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
        Folder/Subfolder-L1/...file1.txt

        所以Git 建议我添加git submodule,我尝试过但很痛苦。


        最后对我有用的是:

        1. git add 一个位于Folder 的最后一个/级别的文件。
        例如:
        git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

        2.git add --all :/ 现在。
        它会非常迅速地添加所有FoldersSubfoldersfiles


        【讨论】:

          【解决方案14】:

          我只需要这样做,我发现您可以轻松地将文件添加到子目录中。您只需要位于 repo 的“顶级目录”,然后运行类似:

          $ git add ./subdir/file_in_subdir.txt
          

          【讨论】:

            【解决方案15】:

            git add --all my/awesome/stuff/ 为我工作。 [1]

            1. https://git-scm.com/docs/git-add

            【讨论】:

              猜你喜欢
              • 2020-10-14
              • 1970-01-01
              • 2012-01-12
              • 2014-05-09
              • 2018-09-02
              • 2020-10-18
              • 1970-01-01
              • 2018-12-08
              • 2017-11-24
              相关资源
              最近更新 更多