Git commit открывает пустой текстовый файл, для чего?

Во всех учебниках Git, которые я прочитал, они говорят, что вы можете сделать:

git init
git add .
git commit

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

Ответ 1

Вы собираетесь разместить сообщение фиксации в этом текстовом файле, затем сохранить и выйти.

Вы можете изменить текстовый редактор по умолчанию, который git использует с помощью этой команды:

git config --global core.editor "nano"

Вам нужно изменить nano на любую команду, обычно открывающую текстовый редактор.

Ответ 2

Как упоминалось Ben Collins, без аргумента -m "..." для ввода встроенного сообщения commit (как правило, это плохая идея, поскольку она побуждает вас быть краткими) этот "большой текстовый файл", который открывается, - это окно, в которое нужно ввести сообщение фиксации.

Обычно рекомендуется писать сводку в первой строке, пропускать строку, а затем писать более подробные заметки ниже; это помогает программам, которые делают такие вещи, как электронная почта, сообщения фиксации с соответствующей строкой темы и полный список изменений, сделанных в теле.

Вместо изменения переменной оболочки EDITOR вы также можете изменить редактор, используемый добавлением дополнительных строк в файл ~/.gitconfig:

[core]
    editor = emacs
    excludesfile = /Users/will/.gitignore

Эта вторая строка на самом деле не имеет ничего общего с вашей проблемой, но я считаю ее действительно полезной, поэтому я могу заполнить свой файл ~/.gitignore всеми этими файловыми типами, которые, как я знаю, я никогда не захочу вносить в репозиторий.

Ответ 3

Текстовый файл, который открывается, представляет собой сводку текущей операции фиксации. Конец git помещает вас в этот файл, чтобы вы могли добавить сообщение фиксации в верхней части файла. После того, как вы добавили свое сообщение, просто сохраните и выйдите из этого файла.

В этой команде также есть переключатель "-m msg", который позволяет вам добавить сообщение фиксации в командной строке.

Ответ 4

Предполагая, что ваш редактор по умолчанию использует vi/vim, вы можете выйти из редактора сообщений фиксации, введя:

:x

который сохранит и покинет файл сообщения фиксации. Затем вы вернетесь в нормальный раздел git.

Дополнительные команды vi:
http://www.lagmonster.org/docs/vi.html

Ответ 5

Если вы используете Mac OS X и используете BBEdit, вы можете установить это как редактор для сообщений для фиксации:

git config --global core.editor "bbedit -w"

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

Ответ 6

Параметр -m для фиксации позволяет ввести сообщение фиксации в командной строке:

git commit -m "my first commit"

Ответ 7

Как все сказали, что это именно то место, где вы добавляете комментарий фиксации, но для некоторых это может все еще запутать esp, если вы не настроили параметры своего редактора, и вы не знаете, что VI: тогда вы можете быть в шоке, потому что вы думаете, что все еще находитесь в GIT - Bash

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

Ответ 8

Когда вы создаете новый коммит, git запускает текстовый редактор и записывает в него некоторые вещи.

Используя этот текстовый редактор, вы намерены написать сообщение о фиксации, которое будет связано с вашей созданной фиксацией.

После того, как вы закончите это, сохраните и выйдите из текстового редактора. git будет использовать то, что вы написали как сообщение фиксации.

Сообщение фиксации имеет определенную структуру, описываемую следующим образом:

Первая строка сообщения фиксации используется как заголовок сообщения (или заголовок). Предпочитаемая длина заголовка фиксации составляет менее 40 символов, так как это количество символов, которые github отображает на вкладке Commits данного репозитория, прежде чем обрезать его, что некоторые люди считают раздражающим.

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

Одна новая строка определяет заголовок и тело сообщения.

Тело может состоять из того, что вам нравится. Обзор изменений, внесенных вашей фиксацией, является разумным. Некоторые сторонние приложения используют информацию, включающую тело сообщений фиксации, чтобы устанавливать различные виды перехватов (я думаю, что Gerrit и Pivotal Tracker, чтобы назвать два).

Вот короткий и сладкий пример. Ведущий # обозначает комментарий.

Gitignore index.pyc

Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   .gitignore
#

Здесь один г-н Торвальдс полагает, что делает хорошее совершение.

И здесь Tpope делает то же самое.

Как указано в нескольких других ответах, изменение редактора по умолчанию является однострочным в командной строке.

По моим предпочтениям:

git config --global core.editor "vim"

Ответ 9

Попробуйте Escape, затем ZZ, после того, как вы закончите вводить свое сообщение. Как говорили другие, когда вы запускаете эту команду commit, на самом деле она запускает текстовый редактор для ввода сообщения. В моем случае (OS X) это был VI, который я выяснил после некоторого рытья. В этом случае нажмите Escape, чтобы перейти в режим "команда" (в отличие от режима INSERT), введите ZZ. Я уверен, что есть другие способы решения задачи, но это было для меня. Никогда не использовав VI или emacs, это было не очевидно для меня и не упоминалось ни в одном из начинающих гидов, которые я использовал. Надеюсь, это поможет.

Ответ 10

Команда git commit откроет редактор, указанный в переменной среды EDITOR, чтобы вы могли ввести комментарий фиксации. В системе Linux или BSD по умолчанию это должно быть vi, хотя любой редактор должен работать.

Просто введите свои комментарии и сохраните файл.

Ответ 11

Да, убедитесь, что у вас есть разумный набор редакторов. Не уверен, что вы будете использовать редактор по умолчанию, но если, как и я, это nano (скажем, где-то около вершины после ввода текста), вам просто нужно ввести комментарий, а затем нажать Ctrl-x для завершения. Затем нажмите y, затем введите, чтобы подтвердить фиксацию.

Кроме того, если вы хотите увидеть простой список файлов, которые вы будете совершать, а не огромный список различий заранее, попробуйте

git diff --name-only

Ответ 12

При выполнении контроля версий вы всегда должны объяснять, какие изменения вы внесли. Обычно в первый раз у вас есть комментарий, например "Начальная фиксация".

Однако в конечном итоге вы хотите сделать хороший комментарий для каждой фиксации. Вам нужно что-то вроде формы:

Добавлена ​​экспериментальная особенность x.

X увеличит производительность функцию Y в состоянии Z. Если вы нужно X активировать его с помощью -x или - переключатели feature-eks. Этот запрос функции адреса # 1138.

Ответ 13

Я был смущен, потому что продолжал пытаться ввести имя файла после: w в VIM. Это не вызывает фиксацию. Вместо этого я продолжал получать сообщение "Прерывание фиксации из-за сообщения о пустой фиксации". Не указывайте имя файла после: w.: w сохраняет файл в .git/COMMIT_EDITMSG по умолчанию. Затем: q для выхода, чтобы завершить фиксацию. Результаты можно просмотреть с помощью журнала git.

Ответ 14

Теперь, когда я изменил свой редактор на emacs, все работает нормально.

Но прежде чем я установил это, "git commit -a" открыл gedit, но также сразу же закончил "Прерывание фиксации из-за пустого сообщения о фиксации". Сохранение файла из gedit не повлияло. Явное назначение редактора с помощью "git config -global core.editor" gedit "" имело тот же результат.

Нет ничего плохого в emacs, но из любопытства, почему это не работает с gedit, и есть ли способ заставить его работать?

Спасибо.

Ответ 15

Для тех из вас, кто использует OS X, я нашел, что эта команда работает хорошо:
git config --global core.editor "open -t -W"

который заставит git открыть текстовый редактор по умолчанию (textedit в моем случае), а затем дождитесь выхода из приложения. Имейте в виду, что вам нужно "Сохранить", а затем "Завершить" textedit до того, как произойдет коммит. Есть несколько других команд, с которыми вы можете играть, как описано на этой странице:

Библиотека разработчиков Apple - команда Open

Вы также можете попробовать git config --global core.editor "open -e -W", если хотите, чтобы git всегда открывал textedit независимо от того, что представляет собой редактор по умолчанию.

Ответ 16

Будучи новичком в терминале, "Escape, а затем ZZ" работал у меня, у меня была эта проблема в течение нескольких месяцев, а также не удалось найти способ обойти ее.

Спасибо TheGeoff за ваш простой совет!

Ответ 17

Возможно, самый простой способ зафиксировать все изменения:

git commit -a -m "Type your commit message here..."

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