让git忽略vim在所有目录中生成的临时文件的正确方法是什么(无论是跨系统全局的还是单个项目的本地的)?
当前回答
在我的情况下,临时文件已经被之前的操作提交了,所以修改.gitignore不会影响那些提交的文件…,你必须git rm files_to_be_ignored——先缓存,然后提交,然后DONE。
其他回答
我还建议忽略以下文件:
.*.swp
.*.swo
因为您可能有以.swp结尾的文件
如果您正在使用源代码控制。Vim临时文件非常无用。 因此,您可能希望配置vim不创建它们。
只需编辑您的~/。Vimrc并添加这些行:
set nobackup
set noswapfile
我发现这会让git忽略vim创建的临时文件:
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
也可以在这里观看。
Vim临时文件以~结尾,因此可以在文件中添加.gitignore行
*~
Vim还创建了具有swp和swo扩展名的交换文件。要删除这些字符,请使用以下语句:
*.swp
*.swo
这将忽略单个项目中的所有vim临时文件
如果你想全局执行,你可以在家里创建一个.gitignore文件(你可以给它另一个名字或位置),并使用以下命令:
git config --global core.excludesfile ~/.gitignore
然后,您只需将想要忽略的文件添加到该文件中。
如果你想在Git文件中注释,你必须在单独的行中这样做:
# Ignore vim files:
*~
*.swp
*.swo
与活动git忽略放在同一行上的任何注释都将导致整行被错误解释。
下面是生成交换文件扩展名的实际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自己的gitignore文件VIM。
正如其他人所正确指出的那样,这个.gitignore也会忽略.svg图像文件和.swf adobe flash文件。
推荐文章
- “node_modules”文件夹应该包含在git存储库中吗
- 如何在可视块模式插入?
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- 强迫自己掌握vi的最好方法是什么?
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?