git忽略vim临时文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git忽略vim临时文件相关的知识,希望对你有一定的参考价值。
使git忽略所有目录中vim生成的临时文件的正确方法是什么(在整个系统中是全局的还是在本地为单个项目)?
Vim临时文件以〜结尾,因此您可以将该行添加到文件.gitignore
中
*~
Vim还创建了具有swp和swo扩展名的交换文件。删除那些使用行:
*.swp
*.swo
这将忽略单个项目中的所有vim临时文件
如果要全局执行此操作,可以在家中创建.gitignore文件(可以为其指定其他名称或位置),并使用以下命令:
git config --global core.excludesfile ~/.gitignore
然后,您只需要将要忽略的文件添加到该文件中
在我的情况下,临时文件已经被先前的操作提交,因此修改.gitignore不会影响那些提交的文件...,你必须先git rm files_to_be_ignored --cache
,然后提交,然后DONE。
如果您正在使用源代码管理。 vim临时文件很没用。 所以你可能想要配置vim不要创建它们。
只需编辑你的〜/ .vimrc并添加以下行:
set nobackup
set noswapfile
或者,您可以将vim配置为将交换文件保存到单独的位置,例如通过在.vimrc
文件中添加类似于以下内容的行:
set backupdir=$TEMP//
set directory=$TEMP//
有关更多信息,请参阅此vim tip。
这应该只能在每个用户的基础上完成,而不是每个存储库。如果Joe使用emacs,他会想要忽略emacs备份文件,但是Betty(使用vi)会想要忽略vi备份文件(在很多情况下,它们是相似的,但是现有大约24,893个常用编辑器,它很漂亮试图忽略所有各种备份扩展,这很荒谬。)
换句话说,不要在.gitignore
或core.excludes
的$GIT_DIR/config
中放任何东西。把信息放在$HOME/.gitconfig
中(正如nunopolonia建议使用--global
。)请注意,“global”表示每个用户,而不是每个系统。
如果您希望为所有用户(您没有)在整个系统中进行配置,则需要使用不同的机制。 (可能在初始化存储库之前设置了模板。)
我还建议考虑忽略以下文件:
.*.swp
.*.swo
因为你可能有以.swp
结尾的文件
在“git commit”之前退出vim。
使vim
使用其他文件夹作为备份文件,(例如/tmp
):
set bdir-=.
set bdir+=/tmp
使用.swp文件的当前文件夹使vim停止:
set dir-=.
set dir+=/tmp
使用-=, +=
通常会很好,因为vim有bdir的其他默认值,dir,我们不想清除所有。有关bdir,dir的更多信息,请查看vim帮助:
:h bdir
:h dir
我发现这将有git忽略由vim创建的临时文件:
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
它也可以被视为here。
Here是生成交换文件扩展名的实际VIM代码:
/*
* Change the ".swp" extension to find another file that can be used.
* First decrement the last char: ".swo", ".swn", etc.
* If that still isn't enough decrement the last but one char: ".svz"
* Can happen when editing many "No Name" buffers.
*/
if (fname[n - 1] == 'a') /* ".s?a" */
if (fname[n - 2] == 'a') /* ".saa": tried enough, give up */
EMSG(_("E326: Too many swap files found"));
vim_free(fname);
fname = NULL;
break;
--fname[n - 2]; /* ".svz", ".suz", etc. */
fname[n - 1] = 'z' + 1;
--fname[n - 1]; /* ".swo", ".swn", etc. */
这将生成以下格式的交换文件:
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-v][a-z]
[._]sw[a-p]
这几乎包含在github自己的VIM gitignore文件中。
正如其他人已经正确指出的那样,这个.gitignore也将忽略.svg图像文件和.swf adobe flash文件。
# VIM: Temperory files
*~
# VIM: Swap-files
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# VIM: Commands :cs, :ctags
tags
cscope.*
# VIM session
Session.vim
# VIM: netrw.vim: Network oriented reading, writing, browsing (eg: ftp scp)
.netrwhist
交换文件的名称通常与您正在编辑的文件相同,扩展名为“.swp”。
- 在Unix上,一个'。'用于在与编辑文件相同的目录中交换文件名。这可以避免交换文件显示在目录列表中。
- 在MS-DOS机器上,当'shortname'选项打开时,任何'。'在原始文件名中替换为'_'。
- 如果此文件已存在(例如,当您从崩溃中恢复时),则会发出警告并使用另一个扩展名“.swo”,“。swn”等。
- 永远不会覆盖现有文件。
- 一旦Vim停止编辑文件,就会删除交换文件。
更换'。'使用'_'可以避免与MS-DOS兼容的文件系统(例如,crossdos,multidos)出现问题。
http://vimdoc.sourceforge.net/htmldoc/recover.html
http://www.vim.org/scripts/script.php?script_id=1075
当然,
只需要在项目的主目录中创建一个“.gitignore”并且必须包含
*.swp
而已
在一个命令中
project-home-directory$ echo '*.swp' >> .gitignore
以上是关于git忽略vim临时文件的主要内容,如果未能解决你的问题,请参考以下文章