git 推送时缺少子文件夹

git subfolder missing on push

我在使用 Git 时遇到了一些问题,我无法使用单个推送命令推送所有子文件夹

我有一个项目目录如下:

project
      |
      |--main
      |     |__dir1
      |     |     |__file1
      |     |     |__filen
      |     |        
      |     |__dir2
      |     |     |__file1
      |     |     |__filen
      |     |__dirn
      |           |__file1
      |           |__filen
      |    
      |--tools
      |       |--dir1
      |       |     |__file1
      |       |     |__filen
      |       |
      |       |__dir2
      |       |     |__file1
      |       |     |__filen    
      |       |
      |       |__dirn

使用此结构,我使用以下命令创建了一个新的本地存储库:

 cd project
 git init

然后,我从项目文件夹添加、提交并推送所有内容:

 git add .
 git commit -m "First commit"
 git push origin -u master

问题是在我的远程仓库中我只找到了第一级目录 所以我只找到了 main 和 tools,但里面的文件夹 none。

目前我没有任何.git在整个目录树中忽略。

我做错了什么?

非常感谢

更新 1:

为了提供更多信息,我使用 gogs 作为 git 服务器 https://gogs.io/

乍一看不是那么简单,你不能简单地添加空目录,但你可以通过将 .gitkeep 文件添加到每个空目录中来克服它:

find . -type d -empty -exec touch {}/.gitkeep \;

{} 被 find 命令找到的每个空目录替换,并成为 shell(touch)命令的 $1。
\;标记查找的 exec 参数的结尾。反斜杠“\”是为了转义“;”标志以标记 -exec 命令的结束。否则它将被视为 bash/shell 终止符 ";"

终于找到了问题的根源...目录权限存在一些问题。使用简单的 chown/chmod 一切都按预期工作。