git игнорировать временные файлы vim - PullRequest
215 голосов
/ 28 января 2011

Как правильно заставить git игнорировать временные файлы, созданные vim во всех каталогах (глобально в системе или локально для одного проекта)?

Ответы [ 11 ]

362 голосов
/ 28 января 2011

Временные файлы Vim оканчиваются на ~, поэтому вы можете добавить в файл .gitignore строку

*~

Vim также создает файлы подкачки с расширениями swp и swo.чтобы удалить их, используйте строки:

*.swp
*.swo

Это будет игнорировать все временные файлы vim в одном проекте

Если вы хотите сделать это глобально, вы можете создать файл .gitignore вваш дом (вы можете дать ему другое имя или местоположение) и использовать следующую команду:

git config --global core.excludesfile ~/.gitignore

Затем вам просто нужно добавить в этот файл файлы, которые вы хотите игнорировать

111 голосов
/ 28 января 2011

Также вы можете настроить vim для сохранения файлов подкачки в отдельном месте, например добавив в файл .vimrc строки, похожие на следующие:

set backupdir=$TEMP//
set directory=$TEMP//

Подробнее см. vim tip .

23 голосов
/ 31 января 2011

Это то, что должно быть сделано только для каждого пользователя, а не для каждого хранилища. Если Джо использует emacs, он захочет игнорировать файлы резервных копий emacs, но Бетти (которая использует vi) будет хотеть игнорировать файлы резервных копий vi (во многих случаях они похожи, но существует около 24 893 общих редакторов, и это довольно смешно пытаться игнорировать все различные расширения для резервного копирования.)

Другими словами, не помещайте ничего в .gitignore или в core.excludes в $GIT_DIR/config. Вместо этого поместите информацию в $HOME/.gitconfig (как предлагает nunopolonia с --global.) Обратите внимание, что «глобальный» означает для пользователя, а не для системы.

Если вы хотите настроить систему для всех пользователей (чего у вас нет), вам понадобится другой механизм. (Возможно с настройкой шаблонов до инициализации хранилища.)

9 голосов
/ 25 октября 2013

Я бы также рекомендовал игнорировать такие файлы, как:

.*.swp
.*.swo

, поскольку у вас могут быть файлы, заканчивающиеся на .swp

5 голосов
/ 22 марта 2012

Выйдите из vim перед "git commit".

, чтобы заставить vim использовать другие папки для файлов резервных копий (например, /tmp):

set bdir-=.
set bdir+=/tmp

, чтобы остановить vimиспользование текущей папки для файлов .swp:

set dir-=.
set dir+=/tmp

Использовать -=, += в целом было бы хорошо, потому что vim имеет другие значения по умолчанию для bdir, dir , мы нене хочу, чтобы очистить все.Обратитесь к справке vim за дополнительной информацией о bdir, dir :

:h bdir
:h dir
3 голосов
/ 29 ноября 2016

Здесь - это фактический код 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]

, которыйэто почти то, что включено в собственный файл gitub для github для VIM .

Как правильно заметили другие, этот .gitignore также будет игнорировать файлы изображений .svg и .swf Adobe Flash файлы.

3 голосов
/ 30 декабря 2013

Я обнаружил, что git игнорирует временные файлы, созданные vim:

[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~

Его также можно просмотреть здесь .

2 голосов
/ 25 июня 2016
# 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, a.используется для замены имен файлов в том же каталоге, что и отредактированный файл.Это позволяет избежать того, что файл подкачки отображается в списке каталогов.
  • На машинах 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

1 голос
/ 28 января 2011

уверен,

просто нужно создать ".gitignore" в домашнем каталоге вашего проекта и должны содержать

*.swp

Вот и все

в одной команде

project-home-directory$ echo '*.swp' >> .gitignore
0 голосов
/ 18 декабря 2018

В моем случае временные файлы уже зафиксированы предыдущими действиями, поэтому изменение .gitignore не повлияет на эти закомментированные файлы ... сначала нужно git rm files_to_be_ignored --cache, затем коммит, затем DONE.

...