Как я могу зафиксировать файлы с помощью git?

85

Ни один урок не поможет!
Все они делают то, что думают, будто я знаю, что делать ...

В настоящее время мое окно терминала начинается с ..

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    httpdocs/newsite/manifest/cache/0a432970ba6491fe65dad60b012e5c95_louloumay2011en-1-4dea3186b7f7b.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0a61b5d7a9e97da78fe602e1ad41edb6_5-4dec7c3d57c80.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0afb6a7716a85d0de46cdd03bb30f75f_fifa_panorama_full_page-01_thu-4dea3d1a0e0f5.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b3bc9be76a5d3e1e36af4b8dcf98658_free2-4df0e2e08761f.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b6342913b8e599fac76da452af98ec5_si-feb-2009-1-4dea3d1abcb61.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b9ddc587340f7744e03c4b2dafacf7f_lou-lou-winter-2009-cover-4dea3d1a9b1a0.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf64ff8fc22720b3da20d0730fa6a04_chatelaine-dec-2009-4dea3d18daa30.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf664e03eb0a2255b69b02aed85add0_summumfeb2011-2-4dea3188766aa.jpg

но нет никакого способа узнать, как делать то, что они говорят здесь ..
http://learn.github.com/p/normal.html

Все это говорит

Мы просто набираем сообщение о фиксации и выходим из редактора.

Что это значит?!
Просто потому , что вы пишете слово просто не означает , что это просто ..

Когда я начинаю печатать, он делает странные вещи, говорит «запись» или «вставка», а есть около 300 файлов, и он хочет, чтобы я заменил каждую строку сообщением?!?

Помогите !

Я бы использовал для этого их удобное приложение для Mac, но если файлов больше 20 или около того, оно зависает!
Что с этим ??

Кирк Строубек
источник
10
Это не имеет ничего общего с моим вопросом. Если я скажу «как кататься на лыжах с холма», тогда вы скажете человеку, как кататься на лыжах, вы не скажете «ну, почему вы на горе»
Кирк Строубек
2
Коммит без аргумента -m запускает текстовый редактор, в котором вы можете делать свои комментарии. (Вероятно, в данном случае по умолчанию используется vim.) Автор учебника предполагает, что вы уже знаете, как его использовать.
Alex Howansky
@alex спасибо за объяснение
Кирк Строубек
Кто-то, более знакомый с OSX, чем я, вероятно, может рассказать вам, как установить в редакторе по умолчанию что-то другое. Обычно в конфигурации запуска вашей оболочки это «экспорт EDITOR = / путь / к / чему угодно».
Alex Howansky
6
-1 для РТ [Ф] М. Похоже, проблема заключается в редакторе по умолчанию, а не в отсутствии чтения документации git.
Филип Окли

Ответы:

93

Когда вы запускаете git commitбез аргументов, он откроет ваш редактор по умолчанию, чтобы вы могли ввести сообщение фиксации. Сохранение файла и выход из редактора приведет к фиксации.

Похоже, ваш редактор по умолчанию - Vi или Vim. Причина, по которой когда вы печатаете "странные вещи", заключается в том, что Vi не запускается в режиме вставки - вам нужно iсначала нажать на клавиатуру! Если вы этого не хотите, вы можете изменить его на что-нибудь попроще, например:

git config --global core.editor nano

Затем вы загрузите редактор Nano (при условии, что он установлен!) При фиксации, что намного более интуитивно понятно для пользователей, которые не использовали модальный редактор, такой как Vi.

Этот текст, который вы видите на экране, просто напоминает вам, что вы собираетесь совершить. Строкам предшествует, #что означает, что они являются комментариями, т.е. Git игнорирует эти строки, когда вы сохраняете сообщение о фиксации. Вам не нужно вводить сообщение для каждого файла - просто введите текст в верхней части буфера редактора.

Чтобы обойти редактор, вы можете предоставить в качестве аргумента сообщение фиксации, например

git commit -m "Added foo to the bar"
Бен Джеймс
источник
Когда вы говорите «игнорировать», значит ли это, что он останется постановочным?
Кирк Строубек
3
Нет, эти строки не влияют на то, что будет совершено. Эти файлы все равно будут зафиксированы, даже если вы удалите строки комментариев. Они просто напоминают о том, в каком состоянии находился ваш репозиторий, когда вы запускали git commitкоманду.
Бен Джеймс
Итак, если я запустил фиксацию, изменение будет записано, даже если в #этой строке есть?
Кирк Строубек
2
Это правильно. Передано то, что git addвнесено в индекс.
Бен Джеймс
Другой вариант: вместо git commit, вы можете запустить. git commit -a -m "Your message for the commit"Тогда ни один редактор не запустится.
27

Похоже, единственная проблема здесь в том, что по умолчанию запускается редактор viили vim, с которым вы не знакомы. (Как быстро кончик, чтобы выйти из этого редактора без сохранения изменений, нажмите Escнесколько раз , а затем введите :, q, !и Enter.)

Есть несколько способов настроить редактор по умолчанию, и вы не указали, какую операционную систему вы используете, поэтому рекомендовать какой-либо конкретный вариант сложно. Я бы предложил использовать:

 git config --global core.editor "name-of-your-editor"

... который устанавливает глобальное предпочтение git для конкретного редактора. В качестве альтернативы вы можете установить $EDITORпеременную среды.

Марк Лонгэр
источник
Ваша vimшпаргалка ценна, особенно для тех, кто пришел из сообщества «значок стоит тысячи командных строк ;-)»
Филип Окли
Я только что обнаружил, что viemu.com/a-why-vi-vim.html особенно полезен в объяснении, почему vi / vim все еще здесь. Затем перейдите
Philip Oakley
25

в стандартном редакторе Vi в этой ситуации вам следует

  1. нажмите Esc
  2. введите ": wq" (без кавычек)
  3. нажмите Ввод
Онер Ксор
источник
16

Команда для фиксации всех измененных файлов:

git commit -a -m 'My commit comments'

-a = все отредактированные файлы

-m = следующая строка является комментарием.

Это зафиксирует репозиторий ваших локальных дисков / папок. Если вы хотите отправить свои изменения на git-сервер / удаленно размещенный сервер, после указанной выше команды введите:

git push

Шпаргалка на GitHub очень удобна.

Али
источник
13

Я не знаю вашего системного окружения, но похоже, что вы набрали:

git commit

И ваш редактор по умолчанию был запущен. В худшем случае (для вас) это могло быть vim :)

Если вы не знаете, как выйти из vim, используйте: q.

Если у вас возникнут дополнительные проблемы, вы можете использовать

git commit -m 'Type your commit message here'
pkk
источник
Есть ли способ выбрать другой редактор, которым он будет открываться? Как нано?
Кирк Строубек
1
Конечно: это должно изменить редактор по умолчанию на nano: git config --global core.editor nano
pkk
сообщение в двойных кавычках .. "Сообщение"
Prabs 05
2

Git использует «индекс» для подготовки коммитов. Вы можете добавлять и удалять изменения из индекса перед фиксацией (в своей вставке вы уже удалили ~ 10 файлов git rm). Когда индекс будет выглядеть так, как вы хотите, запустите git commit.

Обычно это срабатывает vim. Чтобы вставить текст, нажмите i, <esc>возвращается в нормальный режим, нажмите, ZZчтобы сохранить и выйти ( ZQчтобы выйти без сохранения). вуаля, вот и твоя фиксация

вязать
источник
2

Это происходит, когда вы не включаете сообщение при попытке зафиксировать, используя:

git commit

Он запускает среду редактора. Выйдите из него, набрав :q!и нажав Enter.

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

git commit -m 'Initial commit'
Джулиарм
источник
1
Это на самом деле помогло мне больше, чем принятый ответ, объяснив контекст, что происходит и как снова сделать «странные вещи» нормальными.
timmackay 02
1

Похоже, все правки уже внесены в индекс. Поэтому для фиксации просто используйте commitкоманду

git commit -m "My Commit Message"

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

httpdocs/newsite/manifest/cache/*
ДжаредПар
источник
это был подпроект, весь каталог удаляется.
Кирк Строубек
Для того, чтобы увидеть , что все команды Git имеет типа , git --helpэто даст вам все команды , как commit, push, pull, и cloneт.д. Для получения справки по команде конкретной и каких переключатели доступен тип git commit --help, git push --helpэто должно работать на Linux и макинтош командной строке. Если вам нужно хорошее приложение для командной строки, я бы порекомендовал ту же git-scmссылку на github на этой странице. help.github.com/mac-set-up-git
Али,
1

Я столкнулся с той же проблемой, я решил ее, набрав, а :q!затем нажав Enter И это решило мою проблему. После этого выполните следующую команду git commit -a -m "your comment here"

Это должно решить вашу проблему.

Кельвин Ньядзайо
источник
1
Этот ответ уже дан здесь ( stackoverflow.com/a/7080907/2827823 ) ... на самом деле дважды, поэтому нам не нужен еще один.
Асон