Во всех руководствах по Git, которые я читал, говорится, что вы можете:
git init
git add .
git commit
Когда я это делаю, открывается большой текстовый файл. Похоже, что ни одно из руководств не рассматривает этот вопрос, поэтому я не знаю, что делать с файлом или что в него вставлять, если что-нибудь.
Команда git commit
откроет редактор, указанный в переменной среды EDITOR
, чтобы вы могли ввести комментарий фиксации. В системе Linux или BSD это должен быть vi по умолчанию, хотя любой редактор должен работать.
Просто введите свои комментарии и сохраните файл.
Параметр -m
для фиксации позволяет ввести сообщение фиксации в командной строке:
git commit -m "my first commit"
Открываемый текстовый файл представляет собой сводку текущей операции фиксации. Команда git commit переносит вас в этот файл, чтобы вы могли добавить сообщение о фиксации вверху файла. После добавления сообщения просто сохраните и выйдите из этого файла.
В этой команде также есть переключатель «-m msg», который позволяет вам добавить сообщение фиксации в командную строку.
@SLN Сценарий, который вы описываете, не очень ясен. Я собираюсь сделать предположение и предположить, что, возможно, вы не подготовили какой-либо файл для фиксации, поэтому ваша попытка фиксации ничего не дала. Используйте «git add» для файлов первой стадии, которые вы хотите зафиксировать, затем «git commit», чтобы выполнить фактическую фиксацию.
Выполняя контроль версий, вы всегда должны объяснять, какие изменения вы внесли. Обычно в первый раз у вас появляется такой комментарий, как «Начальная фиксация».
Однако в конечном итоге вы хотите делать хороший комментарий для каждого коммита. Вам понадобится что-то в форме:
Added experimental feature x.
X will increase the performance of feature Y in condition Z. Should you need X activate it with the -x or --feature-eks switches. This addresses feature request #1138.
Как упоминалось в Бен Коллинз, без аргумента -m "..."
для ввода встроенной фиксации (что обычно является плохой идеей, поскольку побуждает вас быть кратким), этот «большой текстовый файл», который открывается, представляет собой окно, в котором можно ввести сообщение фиксации .
Обычно рекомендуется написать резюме в первой строке, пропустить строку, а затем написать более подробные примечания ниже; это помогает программам, которые делают такие вещи, как отправка сообщений о фиксации по электронной почте с соответствующей строкой темы и полным списком изменений, сделанных в теле.
Вместо изменения переменной оболочки EDITOR
вы также можете изменить используемый редактор, добавив дополнительные строки в файл ~/.gitconfig
:
[core]
editor = emacs
excludesfile = /Users/will/.gitignore
Эта вторая строка на самом деле не имеет ничего общего с вашей проблемой, но я нахожу ее действительно полезной, поэтому я могу заполнить свой файл ~/.gitignore
всеми этими типами файлов, которые я знать никогда и никогда не захочу фиксировать в репозитории.
Да, убедитесь, что у вас есть разумный набор редакторов. Не уверен, каким будет ваш редактор по умолчанию, но если, как и я, это nano (будет сказано где-то в верхней части после того, как вы наберете фиксацию), вам просто нужно ввести комментарий, а затем нажать Ctrl-x, чтобы закончить. Затем нажмите y, а затем нажмите Enter, чтобы подтвердить фиксацию.
Кроме того, если вы хотите увидеть простой список файлов, которые вы будете фиксировать, а не огромный список различий, попробуйте заранее
git diff --name-only
Как все уже было сказано, это именно то место, где вы добавляете свой комментарий к фиксации - но для некоторых это все еще может сбивать с толку, особенно если вы не настроили параметры своего редактора, и вы не знаете, что такое VI: тогда вы можете быть шокированы , потому что вы подумаете, что все еще находитесь в GIT-Bash
В этом случае вы фактически находитесь в текстовом редакторе с некоторыми интересными способами работы с вещами, и этот набор команд может помочь вам, чтобы вы могли пройти свою первую фиксацию, а затем настроить редактор, с которым вы знаком, или использовать его как возможность узнайте, как его использовать.
Я знаю, что попадание в vi всегда меня шокирует :)
Теперь все стало намного понятнее. +1
Вы должны поместить сообщение о фиксации в этот текстовый файл, затем сохранить и выйти.
Вы можете изменить текстовый редактор по умолчанию, который использует git, с помощью этой команды:
git config --global core.editor "nano"
Вы должны изменить nano на любую команду, которая обычно открывала бы ваш текстовый редактор.
Разве вам не нужно добавлять --global
, чтобы изменить значение по умолчанию?
@Znarkus - хорошее замечание. См. здесь для получения дополнительной информации. По сути, данный ответ изменит только настройку для текущего проекта, тогда как --global
изменяет его для текущего пользователя, а --system
изменяет его для всех на этом компьютере.
Хотя этот ответ содержит хорошую информацию, он не касается самого вопроса.
Я не понимаю, почему это удвоило количество голосов, поскольку некоторые ответы ДЕЙСТВИТЕЛЬНО отвечают на вопрос. Это не так.
@Johan, Вы не ошиблись, но, наткнувшись на это, я нашел этот ответ чрезвычайно полезным. Так что я проголосовал за это.
почему он получил массу голосов, когда он даже не отвечает на вопрос? : S
Я могу сказать только со своей точки зрения: я всегда использовал флаг -m, потому что я даже не знал, как что-то написать, несмотря на то, что имел возможность сохранить что-то в этом странном редакторе. Nano намного проще в использовании, и мне этого достаточно. Так что это было ОЧЕНЬ полезно!
Вероятно, самый простой способ зафиксировать все изменения:
git commit -a -m "Type your commit message here..."
Конечно, есть гораздо более подробные способы фиксации, но это должно помочь вам начать работу.
Если вы работаете в Mac OS X и используете BBEdit, вы можете настроить его как предпочтительный редактор для сообщений о фиксации:
git config --global core.editor "bbedit -w"
После завершения редактирования сохраните и закройте файл, и git будет использовать его для комментариев.
После ввода сообщения попробуйте Escape, затем ZZ. Как говорили другие, когда вы запускаете эту команду фиксации, она фактически запускает текстовый редактор для ввода сообщения. В моем случае (OS X) это был VI, который я понял после некоторого покопания. В этом случае нажмите Escape, чтобы перейти в «командный» режим (в отличие от режима INSERT), введите ZZ. Я уверен, что есть другие способы выполнить эту задачу, но это сделало меня за меня. Поскольку я никогда не использовал VI или emacs, это было не очевидно для меня и не упоминалось ни в одном из руководств для начинающих, которые я использовал. Надеюсь, это поможет.
Я был сбит с толку, потому что все время пытался ввести имя файла после: w в VIM. Это не вызывает фиксации. Вместо этого я продолжал получать сообщение «Прерывание фиксации из-за пустого сообщения фиксации». Не ставьте имя файла после: w. : w по умолчанию сохраняет файл в .git / COMMIT_EDITMSG. Затем: q для выхода, чтобы завершить фиксацию. Вы можете увидеть результаты с помощью git log.
или вы можете просто использовать: x для сохранения и выхода.
Так как я был новичком в Терминале, «Escape and then ZZ» сработал для меня, у меня была эта проблема в течение нескольких месяцев, и я также не мог найти способ ее обойти.
Спасибо TheGeoff за простой совет!
Теперь, когда я сменил редактор на emacs, все работает нормально.
Но до того, как я установил это, «git commit -a» открывал gedit, но сразу же заканчивался сообщением «Прерывание фиксации из-за пустого сообщения фиксации». Сохранение файла из gedit ни на что не повлияло. Явная установка редактора с помощью «git config --global core.editor« gedit »» дала тот же результат.
В emacs нет ничего плохого, но из любопытства, почему это не работает с gedit и есть ли способ заставить его работать?
Спасибо.
если gedit уже запущен, выполнение "gedit file.txt" откроет файл в существующем окне и немедленно вернет ... вы должны опубликовать это как фактический вопрос, особенно об использовании gedit с git.
столкнулся с этим тоже. вы можете исправить это, установив gedit для работы в автономном режиме: git config --global core.editor "gedit -s"
Предполагая, что ваш редактор по умолчанию использует vi / vim, вы можете выйти из редактора сообщений фиксации, набрав:
:x
который сохранит и выйдет из файла сообщения фиксации. Затем вы вернетесь в обычный раздел команд git.
Дополнительные команды vi:
http://www.lagmonster.org/docs/vi.html
Если вы похожи на меня, вы были в режиме вставки / замены (т.е. набирали сообщение о фиксации). Если это так, вам нужно будет нажать esc
, чтобы перейти в командный режим, прежде чем вводить :x
для сохранения и выхода.
При условии, конечно, что его редактор по умолчанию использует vi / vim. Это было бы верно не для всех. Конечно, не для этого пользователя emacs;)
Это избавило меня от многих проблем. Огромное спасибо
Для тех из вас, кто использует OS X, я обнаружил, что эта команда работает хорошо: git config --global core.editor "open -t -W"
что заставит git открыть текстовый редактор по умолчанию (в моем случае - textedit), а затем дождаться выхода из приложения. Имейте в виду, что вам нужно «Сохранить», а затем «Выйти» textedit, прежде чем фиксация будет выполнена. Есть еще несколько команд, с которыми вы можете поиграть, как описано на этой странице:
Библиотека разработчика Apple - команда открытия
Вы также можете попробовать git config --global core.editor "open -e -W"
, если хотите, чтобы git всегда открывал textedit независимо от того, какой редактор используется по умолчанию.
Когда вы создаете новую фиксацию, git запускает текстовый редактор и записывает в него кое-что.
Используя этот текстовый редактор, вы намерены написать сообщение о фиксации, которое будет связано с вашей физически созданной фиксацией.
После этого сохраните и выйдите из текстового редактора. Git будет использовать то, что вы написали, в качестве сообщения фиксации.
Сообщение фиксации имеет особую структуру, описываемую следующим образом:
Первая строка сообщения фиксации используется как заголовок (или заголовок) сообщения. Предпочтительная длина заголовка фиксации составляет менее 40 символов, поскольку это количество символов, которое github отображает на вкладке «Коммиты» данного репозитория перед его усечением, что некоторых людей раздражает.
При составлении заголовка использование в качестве первого слова глагола в настоящем времени с большой буквы является обычной практикой, хотя и не требуется.
Одна новая строка очерчивает заголовок и тело сообщения.
Тело может состоять из чего угодно. Обзор изменений, внесенных вашим коммитом, является разумным. Некоторые сторонние приложения используют информацию, включенную в тело сообщений о фиксации, чтобы активировать различные виды перехватов (я думаю, 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"
это должен быть принятый ответ на вопрос.
Привет, Лу, я тоже новичок в GIt. Я думаю, что после того, как я существую или пишу и существую текстовый файл, git на самом деле не фиксировал постановку и сообщение фиксации, которое я только что написал. Итак, что означает добавление сообщения в этот текстовый файл, если я не могу выполнить фиксацию после записи и выхода из него. (пожалуйста, поправьте меня, если я ошибался, большое спасибо)