为什么git不能添加bundle plugin的文件?

时间:2013-05-02 05:30:14

标签: git vim github vim-plugin

我创建了一个git repo并将vim-plugins(由vundle安装)添加到其中,之后我将此repo推送到github,并将此repo克隆到另一台服务器,我发现vim-plugin的目录为空,dirs和vim-plugin目录下的文件都缺失

如何制作它:

$ make a new test user in Linux, then ( su - test )
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle # install vundle
$ echo "
  set nocompatible
  filetype off
  set rtp+=~/.vim/bundle/vundle/
  call vundle#rc()
  Bundle 'gmarik/vundle'
  Bundle 'Lokaltog/vim-powerline'
  filetype plugin indent on
  " >> .vimrc
$ vim # run vim command `:BundleInstall`
$ mkdir vimgitrepo && cd vimgitrepo && git init
$ cp -a ~/.vim/bundle .
$ git status
  # On branch master
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #       bundle/
  nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  #       new file:   bundle/vim-powerline
  #       new file:   bundle/vundle
  #

如您所见,只添加了dir。

$ git commit -m'test'
$ git push -u origin master

如果你在另一个地方克隆这个仓库,只有空目录。

这是github page

3 个答案:

答案 0 :(得分:1)

在将其推送到GitHub之前,您需要确保已添加这些文件并将其提交到本地存储库中。
例如,请参阅“GIT add vs push vs commit”。

并确保您的目录(如.vim/bundle/vim-powerline)不为空(否则,它们不会被添加到索引中:只能对文件进行版本控制)

同时检查这些目录中的文件是否尚未被忽略(通过.gitignore文件) 如“在git中显示忽略的文件”中所述,执行:

git clean -ndX

列出的文件。

最后,符号链接的目录不会添加为文件
这可以解释:

  • 为什么你的git状态提到了一个新文件,
  • 为什么该repo的克隆显示一个空目录。

请参阅“What does git do to files that are a symbolic link?”:

  

git只是将链接的内容(即它链接到的文件系统对象的路径)存储在'blob'中,就像普通文件一样。
  然后它在表示其包含目录的树对象中存储名称,模式和类型(包括它是一个符号链接的事实)。

答案 1 :(得分:1)

你是否正在使用vundle作为插件管理器?

我遇到了同样的问题,问题是vundle,我不知道Pathogen是否做同样的事情,克隆github存储库并将.git文件包含到插件目录中,所以目录&#39; s内容未包含在您的项目中。

我用这个序列解决了这个问题:

  1. &#39;找到。 -name .gitignore -exec rm -rf {} \;&#39;,删除所有.git目录。
  2. &#39; git init&#39;到init repo(我在步骤1中删除了所有.git文件夹)。
  3. git add。 (再次添加所有文件)。
  4. 我的所有插件目录都已包含在内。

    它能解决你的问题吗(我希望如此)?

答案 2 :(得分:0)

你可以用这个命令代替git push。 git push origin master

此外,如果您想在不同的机器上共享您的vim插件,您可以尝试另一个问题中提到的解决方案 How to share one vimrc file among multiple clients?