2016-08-03 62 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