递归地将整个文件夹添加到存储库

Ash*_*wal 231 git github

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

分支的文件夹结构如下 - SocialApp/SourceCode/DevTrunk/SocialApp,所有源代码文件都在最后一个文件夹中.

我使用以下Git命令:

git add *
git commit -m with the message
git push
Run Code Online (Sandbox Code Playgroud)

这只是将第一个文件夹"SocialApp"推送到GitHub并忽略文件夹内的文件夹SourceCode.我该如何解决?

小智 332

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

然后再试一次

git add --all
git commit -am "<commit message>"
git push
Run Code Online (Sandbox Code Playgroud)

  • 要递归地添加文件夹的整个树结构,命令应该是`git add --all:/` (7认同)
  • @JeroenWiertPluimers`git add -f -all`用于添加.gitignored文件 (6认同)
  • 请注意,这不包括.gitignore中提到的文件.我通常手工添加或使用这样的批处理文件:`for/R %% f in(*.*)do git add --force %% f`(参见https://bitbucket.org/jeroenp/besharp达网络/ SRC /塞尖/脚本/ GIT/GIT-附加力的所有文件递归从 - 电流 - directory.bat) (4认同)
  • @JasonHartley 您的评论可能是一个答案。谢谢! (4认同)
  • 这不是在git仓库中添加所有未分段的文件,而不仅仅是当前文件夹吗?我不认为这是原始问题所要求的. (3认同)
  • 我在我想开始添加文件的目录中使用了它,它最终添加了甚至在目录之外的所有文件。远离这个解决方案。 (3认同)
  • 这不能回答问题。这是关于添加文件夹,而不是整个目录树。有些人不想添加所有内容,因为这样可能会意外提交不需要的文件。 (2认同)
  • 正如其他评论者提到的那样,这是一个糟糕的解决方案。这会递归地暂存存储库中的所有文件,而不是命令行中的当前目录。 (2认同)

小智 30

SETUP - 本地服务器上的本地存储库 - 客户端通过LAN连接到本地服务器

git add foldername/\\*
Run Code Online (Sandbox Code Playgroud)

把它带到服务器......

git commit -m "comments..."
git push remote_server_name master
Run Code Online (Sandbox Code Playgroud)

大多数情况下,用户将remote_server_name指定为origin ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo
Run Code Online (Sandbox Code Playgroud)

  • 失败为'致命:pathspec'foldername/\\*'与任何文件都不匹配.工作为`git add foldername /\*`. (7认同)
  • `git add -ffoldername/\*` - 为我工作。添加了“-f”。 (4认同)
  • `git add foldername/\\*` 和 `git add --all` 有什么区别? (2认同)
  • Danijel,前者将所有文件添加到一个文件夹中,而后者添加存储库中的所有文件 (2认同)

yka*_*kay 24

这对我有用:

git add . --force
Run Code Online (Sandbox Code Playgroud)

  • 绝对是最好的答案.. 一个编辑会提到如果您希望忽略仍然受到尊重,您不需要`--force`。 (3认同)
  • 其他答案要求将文件列表作为命令的参数进行计算,而这个答案不需要,因此是一个更好的选择。 (2认同)

nop*_*oft 17

从顶级目录调用的"git add*"和"git add SocialApp"都应该递归地添加所有目录.

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

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

  • 我不这么认为,我使用git add *并遇到相同的问题。 (2认同)

dis*_*rse 16

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

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


N a*_*a r 7

场景/解决方案 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 :/现在。
它会非常迅速地添加所有Folders,Subfoldersfiles



小智 5

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


小智 5

如果要以递归方式添加目录及其中的所有文件,请转到要添加的目录所在的目录.

$ cd directory
$ git add directoryname
Run Code Online (Sandbox Code Playgroud)


Aus*_*Gwa 5

导航到包含文件的文件夹,
如果您使用的是 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
Run Code Online (Sandbox Code Playgroud)

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

git commit -m "applied some changes to the branch"
Run Code Online (Sandbox Code Playgroud)

在此之后签出分支到主分支

  • 仅提及“init”的答案 (2认同)

Jai*_*oya 5

我只是用这个:

git add app/src/release/*
Run Code Online (Sandbox Code Playgroud)

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

  • ``git add --all app/src/release/`` 对我有用;参考:https://git-scm.com/docs/git-add (2认同)
  • @kmiklas我喜欢这种方法。下次我会用它。它对我使用“git add app/src/release/*”有效,但如果它可能失败,为什么要冒险呢?下次我会更好地使用 `git add --all app/src/release/` 。谢谢你! (2认同)

Suy*_*ain 5

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

git add <directory>/*
Run Code Online (Sandbox Code Playgroud)