【问题标题】:Why cannot git add bundle plugin's files?为什么 git 不能添加 bundle 插件的文件?
【发布时间】:2013-04-26 04:57:38
【问题描述】:

我创建了一个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

如果你在另一个地方克隆这个 repo,只存在空目录。

这里是github page

【问题讨论】:

  • 你能分享那个 github repo 的地址,以便我们自己测试吗?
  • @romainl,该仓库中只有一个空的 vim-powerline 目录...但是您可以按照上述说明进行测试。您只需要使用 vundle 安装 vim-powerline 或任何 vim-plugins。谢谢。
  • 嗯,不,谢谢,我不使用 vundle。这些插件是如何到达那里的?使用:BundleInstall 还是使用$ git clone

标签: git vim github vim-plugin


【解决方案1】:

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

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

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

git clean -ndX

列出不会添加的文件。

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

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

见“What does git do to files that are a symbolic link?”:

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

【讨论】:

  • 是的,我添加了,它不是空的。我又试了一次。而且我发现git add .之后,git只显示:new file: .vim/bundle/vim-powerline,我确定.vim/bundle/vim-powerline不为空。
  • @nfpyfzyf 你和,and 提交了吗?您尝试添加的文件是否已经被忽略(.gitignore 文件)
  • 是的,它不在 .gitignore 文件中。
  • @nfpyfzyf 这些文件在你推送后是否在你的 GitHub 存储库中可见?
  • 在上面的例子中,它不是符号链接,我将 vim-powerline 硬拷贝到 test git repo 中。
【解决方案2】:

你能用这个命令代替 git push 吗? git push 起源大师

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

【讨论】:

    【解决方案3】:

    您是否使用 vundle 作为插件管理器?

    我遇到了同样的问题,问题是 vundle,我不知道 Pathogen 是否也这样做,克隆 github 存储库并将 .git 文件包含到插件目录中,因此该目录的内容不包含在您中项目。

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

    1. '找到 . -name .gitignore -exec rm -rf {} \;',删除所有 .git 目录。
    2. 'git init' 到 init repo(我在步骤 1 中删除了所有 .git 文件夹)。
    3. git 添加。 (再次添加所有文件)。

    我所有的插件目录都包括在内。

    它是否解决了您的问题(我希望如此)?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2017-07-06
      • 2019-05-30
      • 2014-09-16
      • 2018-11-08
      • 2012-10-31
      • 1970-01-01
      相关资源
      最近更新 更多