2016-08-03 60 views
0

每当我做的经典套路:推送操作忽略加入通过GIT中克隆预计,目录

git add -A 
git commit -am "foo" 
git push remote branch 

Git不会上传通过git clone命令添加的文件。

例如,我从github中克隆了一个小项目,并将它作为模块加入到我的项目中。但是当我通过git将它部署到服务器时,它只上传目录(文件夹),但没有任何内容,文件夹是空的。

我该如何解决这个问题,为什么会发生这种情况?

+0

您是否有gitinore文件导致您的dir被忽略?当您添加-A时,dir及其文件是否显示为已上演? – DavidN

+1

等一下,你是否在你现有的本地回购中克隆了另一个回购?如果是这样,git忽略它们。在这种情况下你可以使用子模块。 – DavidN

+0

@DavidN没有'.gitignore'文件。当我使用'git add -A && git status'时,我记得这两个目录是红色的,并且有'(修改过的)'sufix,而其他的则是绿色的。 – Kunok

回答

0

如果你在一个git仓库中并且克隆另一个git仓库,git会在从父仓库添加东西时忽略里面的那个。

基本上git会检查每个添加的文件夹里面是否有.git文件夹。如果从子克隆文件夹中删除.git文件夹,则可以正常添加该文件夹,就像手动复制文件一样

如何解决此问题取决于您想要的内容。你想跟踪这个亚克隆的回购,并能够拉动和更新吗?如果是,那么你需要看看git submodules。如果没有,只需克隆它,rm -rf .git然后添加文件夹。 但是,这两个选项当然相当糟糕。您应该考虑使用依赖管理工具(例如cocoapods,npm等)

+0

是的,我通常更喜欢'npm',但是这个特定的插件没有npm或类似的东西。即使在使用'rm -rf .git'后,子目录仍然被忽略。 – Kunok

+0

删除'.git'后,尝试'git reset HEAD subfolder',然后'git add subfolder'。这一次所有的内容将被添加,当然。 – txulu