Git rebase -i не в терминале / работает только с sudo - PullRequest
6 голосов
/ 20 марта 2012

Я просто хочу отредактировать некоторые коммиты с git rebase -i HEAD~2 внутри текущей ветви.Я использую Ubuntu 10.10 и мне пришлось сначала установить gvim, чтобы команда работала.После этого команда открывает окно gvim с обычным содержимым rebase.Но когда я хочу сохранить файл, gvim говорит:

". Git / rebase-merge / git-rebase-todo" E212

[Невозможно открыть файл для записи]

Также команда rebase завершается сразу после запуска (с Successfully rebased and updated refs/heads/master.).

  • При выполнении той же команды с sudo смена выполняется, но после этого происходитэти файлы принадлежат пользователю root, и у меня больше нет прав на запись.

  • В моей системе ArchLinux gvim открывается непосредственно в терминале, где я запускаю git rebase -i, и все работает.

  • Я пробовал разные терминалы (терминал Gnome, LXTerminal, XTerm) - всегда одна и та же проблема

В чем здесь проблема и как ее решить?Он должен работать без sudo.

Edit 1

  • Некоторые файлы в .git/... принадлежат пользователю root и доступны только для чтения.Все каталоги и файлы первого уровня .git/ принадлежат мне.С помощью ls -l --recursive .git/ | grep root я попытался определить, какие файлы, но на выходе не указаны пути к файлам ...
  • Должны ли все файлы в .git/ принадлежать пользователю?Может ли это быть причиной проблемы?

РЕДАКТИРОВАТЬ 2

  • Даже после изменения владельца и прав на запись всех файлов внутри .git для пользователя с sudo chown -R user:user .git/ иchmod u+w -R .git/ (ls -l теперь показывает что-то вроде -rw-r--r-- 1 user user), проблема остается прежней.

Ответы [ 4 ]

15 голосов
/ 14 июня 2012

Мое решение было:

Run

$ git config --global core.editor "gvim -f"

Во-первых, я думал, что это потому, что мой репозиторий был на диске NTFS, поэтому права доступа к файлам не будут работать правильно. Но даже после монтирования диска с правильными правами доступа к файлам проблема осталась прежней. Помогает запуск vim с параметром -f (я читал о других людях, решающих его аналогичным образом), но я не знаю почему.

0 голосов
/ 15 января 2016

Я использую spf13 conf , и я решил проблему, выполнив следующие шаги:

rm -rf ~/.vimswap
rm -rf ~/.vimviews
rm -rf ~/.vimbackup

Кажется, что ваш процесс восстановления был прерван, и удаление этих каталогов может восстановить его.

0 голосов
/ 12 июня 2012

У меня такая же проблема. изменение разрешений в папке не устраняет проблему В моем случае это потому, что установлен umask 27, который по умолчанию создает файлы с

-rw-р -----

разрешений, Очевидно, что git утомляет, чтобы создать каталог, который не может быть сохранен пользователем. Поэтому это ошибка в git.

Примечание: я заметил, что использование редактора vim позволяет обойти эту ошибку. Похоже, у gedit и kate проблемы с разрешениями.

0 голосов
/ 21 марта 2012

Сделайте sudo chown -R user .git, чтобы дать user право собственности на файлы.Вам никогда не нужно запускать git с sudo, так как это может привести к таким проблемам.

...