Як я можу зафіксувати файли за допомогою git?


84

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

Зараз моє вікно терміналу починається з ..

# 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 дякую за пояснення
Kirk Strobeck

Хтось більш знайомий з OSX, ніж я, напевно, може сказати вам, як налаштувати редактор за замовчуванням на щось інше. Зазвичай це "експортувати РЕДАКТОР = / шлях / до / що завгодно" у вашій конфігурації запуску оболонки.
Алекс Хованський,

6
-1 для RT [F] M. Проблемою є редактор за замовчуванням, а не відсутність читання документації git.
Філіп Оклі

Відповіді:


92

Коли ви запускаєте git commitбез аргументів, він відкриє ваш редактор за замовчуванням, щоб дозволити вам ввести повідомлення коміту. Збереження файлу та вихід із редактора зробить коміт.

Схоже, вашим редактором за замовчуванням є Vi або Vim. Причина "дивні речі" трапляється, коли ви вводите, що Vi не запускається в режимі вставки - спочатку потрібно натиснути iна клавіатурі! Якщо ви цього не хочете, ви можете змінити це на щось простіше, наприклад:

git config --global core.editor nano

Потім ви завантажите редактор Nano (якщо припустимо, що він встановлений!), Коли виконуєте коміт, що набагато інтуїтивніше для користувачів, які не використовували модальний редактор, такий як Vi.

Цей текст, який ви бачите на своєму екрані, просто нагадує вам, що ви збираєтеся зробити. Рядки передують, #що означає, що вони є коментарями, тобто Git ігнорує ці рядки, коли ви зберігаєте повідомлення коміту. Вам не потрібно вводити повідомлення для кожного файлу - просто введіть текст у верхній частині буфера редактора.

Щоб обійти редактор, ви можете надати повідомлення про коміт як аргумент, наприклад

git commit -m "Added foo to the bar"

Коли ви говорите "ігнорувати", чи означає це, що воно буде інсценізоване?
Kirk Strobeck

3
Ні, ці рядки не впливають на те, що буде здійснено. Ці файли все одно будуть записані, навіть якщо ви видалите рядки коментарів. Вони є лише нагадуванням про те, яким був стан вашого сховища, коли ви запускали git commitкоманду.
Ben James

Отже, якщо я запустив коміт, зміна буде записано, навіть якщо #на цьому рядку є символ?
Кірк Штробек,

2
Це правильно. Що виконується, так це те, що було додано git addдо індексу.
Ben James

Інший варіант - замість 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 все ще тут. Потім перейдіть на шпаргалку клавіатури viemu.com/a_vi_vim_graphic_cheat_sheet_tutorial.html
Філіп Оклі

24

у стандартному редакторі Vi у цій ситуації ви повинні

  1. натисніть клавішу Esc
  2. введіть ": wq" (без лапок)
  3. Натисніть клавішу Enter

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'

Чи є спосіб вибрати інший редактор, за допомогою якого він буде відкритий? Як нано?
Kirk Strobeck

1
Звичайно: це має змінити редактор за замовчуванням на nano: git config --global core.editor nano
pkk

повідомлення в подвійних лапках .. "Повідомлення"
Прабс

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.03.16

1

Схоже, всі зміни вже є частиною індексу. Тому для фіксації просто використовуйте commitкоманду

git commit -m "My Commit Message"

Дивлячись на ваші повідомлення, хоча мій інстинкт каже, що ви, мабуть, не хочете, щоб cacheфайли були включені у ваше депо. Особливо якщо це щось, що будується на льоту під час запуску вашої програми. Якщо так, то вам слід додати наступний рядок у файл .gitignore

httpdocs/newsite/manifest/cache/*

це був підпроект, весь реж видаляється.
Kirk Strobeck

Для того, щоб побачити , що всі команди 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 ) ... насправді двічі, тому нам не потрібна ще одна.
Асон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.