2014-11-21 57 views
0

我要提交我的变化,但是git的聚会,当我运行git环聊,当我运行'git add。'时

git add . 

我使用-v选项,重新运行,然后我得到

add 'dev/less/module/basic-structure/eo-featured.less' 
add 'dev/less/module/page-content/content/.eo-cv.less.swo' 

我使用vim,这就是为什么我想这.swo文件,我不知道那是什么,但我并不需要它,所以我跑:

git rm dev/less/module/page-content/content/.eo-cv.less.swo 

结果是

fatal: pathspec 'dev/less/module/page-content/content/.eo-cv.less.swo' did not match any files 

有什么想法?

+0

这是什么问题?你在问为什么'git add .'挂起,或者你在问'.swo'文件是怎么回事? – Jubobs 2014-11-21 16:43:10

+1

您可能想要查看[Fugitive](https://github.com/tpope/vim-fugitive)以了解您的Vim + git需求。请参阅以下[Vimcasts](http://vimcasts.org/)有关它的剧集:[The Fugitive Series - a retrospective](http://vimcasts.org/blog/2011/05/the-fugitive-series/) – 2014-11-21 16:47:08

+0

@jubobs问两个,为什么git挂起,为文件,只是一个提示。 – 2014-11-21 17:25:24

回答

1

.swo文件没有被git跟踪(除非你已经添加过去),这就是为什么你不能使用git rm(它只告诉git停止跟踪文件)。

你只是不想使用git add时上演了,你有两种方式来做到这一点:

  1. 只给你真想阶段git add(代替的.)文件
  2. *.swo写入您的.gitignore文件(如果文件不存在,您可以创建该文件)。
+0

我已将vim.gitignore复制到.gitignore,但它不包含。*。swo,任何想法为什么此扩展未默认添加到vim.gitignore文件中? – 2014-11-21 17:22:55

2

如果文件从来没有承诺git rm将无法​​正常工作。

运行git status会告诉你如何正确unstage此文件:

$ git status 
On branch master 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 
     new file: dev/less/module/basic-structure/eo-featured.less 
     new file: dev/less/module/page-content/content/.eo-cv.less.swo 

所以git reset HEAD dev/less/module/page-content/content/.eo-cv.less.swo应该unstage文件。

+1

*如果文件从未提交,'git rm'将不起作用。*确实,但这不是这里发生的情况。在你描述的情况下,你得到的错误信息是'错误:下面的文件已经在索引中进行了改变:...',这与OP报告的错误消息不同。 – Jubobs 2014-11-21 17:49:14

4

你的swo文件很可能是由vim创建的,所以称为交换文件。在vim中,你可以用:h swap来查看细节。

如果你不想VIM生成交换文件,你可以设置选项:

set noswf 

你有错误味精当你试图“删除”的SWO文件,因为该文件不是招”没有被git跟踪过,你用过git rm ...。您应该使用rm ...file将其删除。事实上,如果你正常启动/关闭你的vim,你不必手动删除交换文件。 Vim将在您退出vim后将其删除。

因此,您可以设置上述选项,避免创建交换文件。或者在.gitignore中添加一个条目让git忽略这些文件。

+0

该文件根本不存在,我现在不从git中发现它? – 2014-11-21 17:19:49

+0

如果.swo是一个交换文件,那么什么是.swp文件? – 2014-11-21 17:26:47

+1

你运行git,在vim中打开你的文件 – Kent 2014-11-21 17:33:15

1

我解决了这个问题,我认为这是一个问题,因为使用-v选项,没有向我提供我需要的信息。

问题出在一个巨大的文件,名为ctags,git试图添加到舞台区域,并且花费太长时间。

我将它添加到.gitignore中。*。swo文件,问题就解决了。

所以如果git环聊只是检查你的目录中是否有大文件。