3

我对 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,但里面没有文件夹。

目前我在整个目录树中没有任何 .gitignore 。

我做错了什么?

非常感谢您

更新1:

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

4

2 回答 2

1

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

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

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

于 2018-03-08T08:35:54.273 回答
0

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

于 2018-03-13T06:40:34.663 回答