推送时缺少 git 子文件夹

标签 git push gogs

我的 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。

我做错了什么?

非常感谢

更新一:

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

最佳答案

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

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

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

关于推送时缺少 git 子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167875/

相关文章:

swift - 如何在手机网站中播放通知声音

git - 使用docker-compose安装Gogs

linux - 如何设置路径以在终端中运行 Gitea 命令而不考虑目录?

Docker compose无法启动已在使用的服务地址?

git - 修复 git diff-files 列出 docker 中的所有文件

具有多个项目的服务器的 GIT 存储库布局

git - 机器学习模型的版本控制(约250 MB)

android - 实现 Android 通知应用程序的最省电方式

尝试推送到远程分支时出现git错误

git - Rubymine:如何让 Git 忽略由 Rubymine 创建的 .idea 文件