Git不会添加任何文件 - 只是一个空目录

时间:2012-03-09 01:00:21

标签: git github

我一直在Xcode中开发一个iPhone项目,并决定将它放在github上。我在github上创建了一个repo,克隆了它,并将我的所有文件都移到了目录中。然后我试图

git add Directory .

我承诺并推动,发现现在repo中唯一的东西就是这个目录。它什么都没有 - 我甚至无法点击它在github文件查看器中为repo打开它。它是文件夹和文件夹名称的图片。我试过了

git add Directory .
git add Directory -A
git commit -a

什么都不会将这些文件添加到目录中。我做错了什么?

4 个答案:

答案 0 :(得分:8)

可能存在另一个存储库。

我的vimfiles中的插件目录发生了这种情况。 像这样重现

  1. git克隆来自GitHub的东西(在我的例子中,一个插件,例如vim-easymotion)在你的存储库的某个地方(在我的情况下进入vimfiles\bundle
  2. git add .,然后git status将显示所有已实现的内容是文件夹名称(在本例中为bundle\vim-easymotion)已添加为new file
  3. git commit,然后是git push origin master(将更改推送到GitHub)
  4. 在浏览器中导航到GitHub以检查您在步骤1中克隆了某些内容的文件夹,您将看到它将克隆的名称显示为空文件
  5. 我只是在Git Bash的vimfiles\bundle\vim-easymotion目录中发布了git config -l时才意识到发生了什么,并注意到Lokaltog的引用,vim-easymotion的所有者存储库。所以我发布了git remote -v,当然,在该目录中,Git别名是origin https://github.com/Lokaltog/vim-easymotion.git,这不是我的存储库的远程地址,而是插件的远程地址。由于我的无知而震惊,我使用FreeCommander导航到插件目录,显示隐藏文件,当然还有插件创建者的.git文件。

    治愈,假设您已将其他人的存储库克隆到您的存储库中,就像我一样:

    1. 攻击克隆子目录中的Git Bash,发出find . | grep /.git | xargs rm -rf以删除所有不需要的.git个文件
    2. git remote -v检查您是否已回到自己的遥控器别名
    3. 现在暂时将整个子目录移出存储库
    4. git status现在将报告文件已被删除(在我的情况下为vim-easymotion
    5. git add -A进行删除,然后git commitgit push origin master从GitHub远程删除该daft文件名
    6. 将(now clean)子目录移回存储库,然后照常继续。

答案 1 :(得分:2)

git add .

在目录中应该添加所有内容,除非.gitignore文件忽略它...

答案 2 :(得分:1)

尝试git add .或者使用git gui并通过单击图标来选择其中的文件然后提交它们。

git不会跟踪目录 - 它会跟踪文件和目录。如果显式添加文件,则该目录将作为文件路径的一部分包含在内。添加目录内容git add Directory/*可以完成这项工作。

答案 3 :(得分:1)

我很惊讶地发现git add . ; git commit不适合你。您确定从repo中最顶层的目录运行这些命令吗?以下是您通常期望发生的事情的总结:

cd ~/Directory  # or whatever the path is in your case
git status      # shows lots of "Untracked files" because this is a new repo
git add .       # adds everything to your index
git status      # now shows lots of "Changes to be committed"
git commit      # fires up the editor and finishes the commit
git show        # shows the commit you just made

在什么时候这会让你失望?