{"id":4548,"date":"2026-07-08T07:00:00","date_gmt":"2026-07-07T22:00:00","guid":{"rendered":"https:\/\/litcoder.com\/?p=4548"},"modified":"2026-06-26T23:04:58","modified_gmt":"2026-06-26T14:04:58","slug":"emacs-buffer-is-read-only","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=4548","title":{"rendered":"Emacs: Buffer is read-only"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\uc6d0\uaca9 \uc11c\ubc84\uc5d0 \uc811\uc18d\ud574\uc11c \uac1c\ubc1c\uc744 \ub9c8\uce58\uace0 \ucee4\ubc0b\uc744 \uc815\ub9ac\ud558\ub824\uace0 <code>git rebase -i &lt;base_commit><\/code>\ub97c \ud558\ub294\ub370 &#8220;Buffer is ready-only&#8221;\uac00 \ub728\uba74\uc11c rebase\ub97c \uc218\ud589\ud560 \uc218 \uc5c6\ub294 \ubb38\uc81c\uac00 \uc0dd\uacbc\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"467\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/emacs_git_rebase_ro_error.png\" alt=\"\" class=\"wp-image-4549\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/emacs_git_rebase_ro_error.png 600w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/06\/emacs_git_rebase_ro_error-300x234.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uceec\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 Emacs\uc5d0\uc11c\ub294 \uc774\ub7f0 \ubb38\uc81c\ub97c \uacaa\uc740 \uc801\uc774 \uc5c6\uc5c8\ub294\ub370 \uc6d0\uaca9 \uc11c\ubc84\uc5d0\uc11c\ub294 <code>git-rebase-todo<\/code> \ubc84\ud37c\ub97c \uc77d\uae30 \uc804\uc6a9\uc73c\ub85c \uc77d\uc5b4 \ubc84\ub9ac\ub294 \ubb38\uc81c\uac00 \uc0dd\uae30\ub294 \uac83\uc774\ub2e4. \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 \ubc29\ubc95\uc740 \ub450\uac00\uc9c0 \uc815\ub3c4\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\ubc29\ubc951: Read-only \uac15\uc81c \uc804\ud658<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ubcc4\ud55c \ubb38\uc81c\uac00 \uc788\uc5b4\uc11c\ub77c\uae30 \ubcf4\ub2e4\ub294 \ubaa8\uc885\uc758 \uc774\uc720\ub85c special mode\uac00 \ud65c\uc131\ud654 \ub418\uc5b4\uc11c read-only\uac00 \uac78\ub9b0 \uc0c1\ud0dc\uac00 \ub418\ub294 \uac83\uc77c \ubfd0\uc774\ubbc0\ub85c <code><strong>C-x C-q<\/strong><\/code>\ub85c \uc4f0\uae30\ubaa8\ub4dc\ub85c \uac15\uc81c \uc804\ud658\ud574\uc11c \uc218\uc815\uc744 \ud574\ub3c4 \ubcc4 \ubb38\uc81c\uac00 \uc5c6\ub2e4. \ub2e4\ub9cc, \uc774\ud6c4\ub85c\ub3c4 <code>git rebase -i <\/code>\uba85\ub839\uc5b4\ub97c \uc218\ud589\ud560 \ub54c \ub9c8\ub2e4 \uac15\uc81c \uc804\ud658\uc744 \ud574\uc918\uc57c \ud55c\ub2e4\ub294 \uc0ac\uc18c\ud55c \ubb38\uc81c\uac00 \uc788\uc744 \ubfd0.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\ubc29\ubc952: git-rebase-mode-hook \uc124\uc815<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9e4\ubc88 \ubc84\ud37c\ub97c \uac15\uc81c \ubcc0\ud658\ud558\ub294 \uacfc\uc815\uc744 \uadc0\ucc2e\uc73c\ub2c8 \uc544\uc608 git rebase mode\uc77c \ub54c read-only\ub97c \uac15\uc81c\ub85c \ud478\ub294 \ubc29\ubc95\ub3c4 \uc788\ub2e4. init file\uc758 \ub4b7\ucabd\uc5d0 \ub2e4\uc74c\uc744 \ucd94\uac00\ud574 \uc900\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n...\n\n;; git rebase\ub97c \uc218\ud589\ud560 \ub54c read-only \uac78\ub9ac\ub294 \ubb38\uc81c \uc218\uc815\n(add-hook 'git-rebase-mode-hook\n  (lambda ()\n    (read-only-mode -1)))<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\uc6d0\uaca9 \uc11c\ubc84\uc5d0 \uc811\uc18d\ud574\uc11c \uac1c\ubc1c\uc744 \ub9c8\uce58\uace0 \ucee4\ubc0b\uc744 \uc815\ub9ac\ud558\ub824\uace0 git rebase -i &lt;base_commit>\ub97c \ud558\ub294\ub370 &#8220;Buffer is ready-only&#8221;\uac00 \ub728\uba74\uc11c rebase\ub97c \uc218\ud589\ud560 \uc218 \uc5c6\ub294 \ubb38\uc81c\uac00 \uc0dd\uacbc\ub2e4. \ub85c\uceec\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 Emacs\uc5d0\uc11c\ub294 \uc774\ub7f0 \ubb38\uc81c\ub97c \uacaa\uc740 \uc801\uc774 \uc5c6\uc5c8\ub294\ub370 \uc6d0\uaca9 \uc11c\ubc84\uc5d0\uc11c\ub294 git-rebase-todo \ubc84\ud37c\ub97c \uc77d\uae30 \uc804\uc6a9\uc73c\ub85c \uc77d\uc5b4 \ubc84\ub9ac\ub294 \ubb38\uc81c\uac00 \uc0dd\uae30\ub294 \uac83\uc774\ub2e4. \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 \ubc29\ubc95\uc740 \ub450\uac00\uc9c0 \uc815\ub3c4\uac00 \uc788\ub2e4. \ubc29\ubc951: Read-only \uac15\uc81c \uc804\ud658 \ud2b9\ubcc4\ud55c \ubb38\uc81c\uac00 \uc788\uc5b4\uc11c\ub77c\uae30 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[6],"tags":[41,53,454,453],"class_list":["post-4548","post","type-post","status-publish","format-standard","hentry","category-tools","tag-emacs","tag-git","tag-readonly","tag-rebase"],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":4342,"url":"https:\/\/litcoder.com\/?p=4342","url_meta":{"origin":4548,"position":0},"title":"[Tip] Emacs: rust-analyzer-tramp\uac00 \uacc4\uc18d \uc8fd\ub294 \ubb38\uc81c","author":"litcoder","date":"2026\ub144 4\uc6d4 29\uc77c","format":false,"excerpt":"Remote server\uc5d0 tramp mode\ub85c rust file\uc744 \uc77d\uc5b4\uc11c rust-mode\uc5d0 \uc9c4\uc785\ud55c \ud6c4\uc5d0 \ubbf8\ub2c8\ubc84\ud37c\uc5d0 \uc544\ub798\uc640 \uac19\uc740 \uacbd\uace0\uac00 \ub728\ub294\ub370, 'y'\ub97c \uc785\ub825\ud574\uc11c rust-analyzer-tramp\ub97c \uc7ac\uc2e4\ud589 \uc2dc\ucf1c\ub3c4 \uacc4\uc18d\ud574\uc11c \uc8fd\uc5b4\uc11c \uac19\uc740 \uc624\ub958\uac00 \ubcf4\uc774\ub294 \ubb38\uc81c\uac00 \uc0dd\uacbc\ub2e4. rust-analyzer \uc124\uce58 \ud655\uc778 Remote server\uce21\uc5d0 rust-analyzer\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\uba74 \uc774\uc640 \uac19\uc740 \ubb38\uc81c\uac00 \uc0dd\uae38 \uc218 \uc788\uc73c\ub2c8 \ub2e4\uc74c\uc758 \uba85\ub839\uc5b4\ub85c rust-analyzer\ub97c update\ud574\ubcf8\ub2e4. \ub9cc\uc57d \uc124\uce58 \ub418\uc5b4 \uc788\uc9c0\u2026","rel":"","context":"&quot;Programming&quot;\uc5d0\uc11c","block_context":{"text":"Programming","link":"https:\/\/litcoder.com\/?cat=5"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/rust-analyzer-tramp-error.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/rust-analyzer-tramp-error.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/rust-analyzer-tramp-error.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":4189,"url":"https:\/\/litcoder.com\/?p=4189","url_meta":{"origin":4548,"position":1},"title":"Lightsail \uc11c\ubc84\uac00 \uc790\uafb8 \uc8fd\uc5b4\uc694","author":"litcoder","date":"2026\ub144 3\uc6d4 18\uc77c","format":false,"excerpt":"Jetpack\uc774 \uc694\uc998\ucc98\ub7fc \ub9ce\uc774 \ub9d0\uc744 \uac74 \uc801\uc774 \uc788\uc5c8\ub358\uac00? \ucd5c\uadfc\uc5d0 Bitnami\uc5d0\uc11c Amazon Linux 2023\uc73c\ub85c \uc774\uc0ac\ud558\uba74\uc11c Lightsail instance\ub97c \ud55c \ub2e8\uacc4 \ube44\uc2fc \uac83\uc73c\ub85c \uc62c\ub9ac\uace0 \ub098\uc11c\ubd80\ud130 \uc6f9\uc0ac\uc774\ud2b8\uac00 \ub2e4\uc6b4\ub418\uc5c8\ub2e4\ub294 Jetpack\uc758 \ub178\ud2f0\uac00 \uacc4\uc18d \ub72c\ub2e4. \ub354 \ube44\uc2f8\uba74 \ub354 \uc798\ub3cc\uc544\uc57c \ub418\ub294 \uac83 \uc544\ub2cc\uac00? \uc774\ub7f0 \ub178\ud2f0\ub97c \ubc1b\uace0\ub098\uc11c \ud655\uc778\ud574 \ubcf4\uba74 \ube14\ub85c\uadf8\uac00 \uc811\uc18d\ub418\uc9c0 \uc54a\uc744 \ubfd0\ub9cc \uc544\ub2c8\ub77c SSH \uc870\ucc28\ub3c4 \ub728\uc9c0 \uc54a\ub294 \uc0c1\ud0dc\uac00 \ub418\uc5b4\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/02\/xmlrpc_attac_log.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/02\/xmlrpc_attac_log.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/02\/xmlrpc_attac_log.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/02\/xmlrpc_attac_log.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1545,"url":"https:\/\/litcoder.com\/?p=1545","url_meta":{"origin":4548,"position":2},"title":"Emacs\ub85c AWS EC2 \uc6d0\uaca9\uc9c0 \ud30c\uc77c \ud3b8\uc9d1","author":"litcoder","date":"2017\ub144 3\uc6d4 12\uc77c","format":false,"excerpt":"Emacs\uc758 TRAMP mode\ub97c \uc0ac\uc6a9\ud558\uba74 \uc6d0\uaca9\uc11c\ubc84\uc5d0 \uc788\ub294 \ubd88\ub7ec\uc640\uc11c \ubc14\ub85c \ud3b8\uc9d1\ud560 \uc218 \uc788\ub2e4. \ub2e4\uc74c\uc740 ssh\uac00 \ub3cc\uace0\uc788\ub294 AWS EC2 \uc11c\ubc84\uc758 \ud30c\uc77c\uc744 TRAMP mode\ub85c \ud3b8\uc9d1\ud558\uae30 \uc704\ud55c \uc124\uc815\uc744 \uc124\uba85\ud55c\ub2e4. Emacs: version 25.1 (macOS) init.el\uc5d0 TRAMP mode \uc124\uc815\uc744 \ucd94\uac00. ;TRAMP (require 'tramp) (setq tramp-default-method \"ssh\") \ud3b8\uc9d1\ud560 \uc6d0\uaca9\uc9c0 \ud30c\uc77c\uc744 \ubd88\ub7ec \uc62c \ub54c\ub294 \uacc4\uc815@\ud638\uc2a4\ud2b8:\ud30c\uc77c\uacbd\ub85c \ud615\uc2dd\uc73c\ub85c \ud558\uba74\ub418\ub294\ub370, EC2\uc758 pem\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3853,"url":"https:\/\/litcoder.com\/?p=3853","url_meta":{"origin":4548,"position":3},"title":"SSH Permission denied (publickey)","author":"litcoder","date":"2025\ub144 11\uc6d4 26\uc77c","format":false,"excerpt":"\uc8fc\ub85c \uc2dc\uc2a4\ud15c\uc744 \uc124\uc815\ud558\ub294 \ucd08\uae30\uc5d0 \ubc1c\uc0dd\ud558\ub294 \ubb38\uc81c\uc778\ub370 private key\uac00 \uc81c\ub300\ub85c \uc788\uace0 file permission\ub3c4 \uc798 \uc124\uc815 \ub418\uc5b4 \uc788\uc74c\uc5d0\ub3c4 ssh \uc811\uc18d\uc744 \uc2dc\ub3c4\ud558\uba74 \uad8c\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4. $ ssh -T git@github.com git@github.com: Permission denied (publickey). \ud574\uacb0\ud558\ub294 \ubc29\ubc95\uc740 \uc0ac\uc6a9\ud558\ub824\ub294 private key\ub97c ssh-add \uba85\ub839\uc5b4\ub97c \uc774\uc6a9\ud574\uc11c ssh-agent\uc5d0\uac8c \ucd94\uac00\ud574 \uc8fc\ub294 \uac83\uc778\ub370, \ub9cc\uc57d ssh-agent\uac00 \ub3d9\uc791\ud558\uc9c0 \uc54a\ub294 \uc0c1\ud0dc\ub77c\uba74 \uc774\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3457,"url":"https:\/\/litcoder.com\/?p=3457","url_meta":{"origin":4548,"position":4},"title":"CMake FetchContent\uc758 target\uc774 \uc911\ubcf5\ub418\ub294 \ubb38\uc81c","author":"litcoder","date":"2024\ub144 9\uc6d4 8\uc77c","format":false,"excerpt":"CMake\uc758 FetchContent\ub294 \ube4c\ub4dc \uacfc\uc815\uae4c\uc9c0 \ucc98\ub9ac\ud574 \uc8fc\uae30\uc5d0 git-submodule \ubcf4\ub2e4 \ud3b8\ub9ac\ud55c \ubc29\uc2dd\uc778 \uac83 \uac19\ub2e4. \ub2e4\ub9cc, version 3.22.1 \uae30\uc900\uc73c\ub85c \uc5ec\ub7ec \ud504\ub85c\uc81d\ud2b8 \ub4e4\uc774 \ub3d9\uc77c\ud55c target\uc774\ub984\uc744 \uc911\ubcf5\ud574\uc11c \uc120\uc5b8\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \uc774\ub97c \uc798 \ucc98\ub9ac \ud558\uc9c0 \ubabb\ud558\uace0 \uc704\uc640 \uac19\uc740 \uc5d0\ub7ec\ub97c \ubc49\uace0 \uc885\ub8cc\ub418\ub294 \ubb38\uc81c\uac00 \uc788\ub2e4. -- Found systemd via pkg-config. CMake Error at build\/_deps\/grpc-src\/CMakeLists.txt:667 (add_custom_target): add_custom_target cannot create target\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4324,"url":"https:\/\/litcoder.com\/?p=4324","url_meta":{"origin":4548,"position":5},"title":"OpenProject\uc640 GitHub \uc5f0\ub3d9\ud558\ub294 \ubcf4\ub2e4 \uac04\ub2e8\ud55c \ubc29\ubc95","author":"litcoder","date":"2026\ub144 4\uc6d4 22\uc77c","format":false,"excerpt":"OpenProject\uc640 GitHub\uc758 \uc5f0\ub3d9\uc744 \uc704\ud574 \uc774\uc804\uc758 \ud3ec\uc2a4\ud305\uc5d0\uc11c \ub2e4\ub8ec \ubc29\ubc95\uc740 OpenProject\uc758 task ticket\uc5d0\uc788\ub294 Git snippets\uc758 \ub0b4\uc6a9\uc744 \ubcf5\uc0ac\ud574\uc11c \ud130\ubbf8\ub110\uc5d0 \ubd99\uc5ec\ub123\ub294 \uac83\uc774\uc5c8\ub294\ub370, \uc774 \ub54c \ub9cc\ub4e4\uc5b4\uc9c0\ub294 branch\uc758 \uc774\ub984\uc740 OpenProject ticket\uc758 \uc81c\ubaa9\uc5d0 \uae30\ubc18\ud55c \uac83\uc774\uc5b4\uc11c \uc790\uce6b\ud558\uba74 branch\uc758 \uc774\ub984\uc774 \uc9c0\ub098\uce58\uac8c \uae38\uc5b4\uc9c0\ub294 \ub370\ub2e4\uac00, \uc0ac\uc804\uc5d0 \uc815\ud574\ub454 \ud300\ub0b4\uc758 branch naming rule\uacfc \ucda9\ub3cc\ud558\uae30 \uc27d\ub2e4. \ub2e4\ud589\ud788\ub3c4 OpenProject\uc758 GitHub \uc790\ub3d9 \uc5f0\ub3d9\uae30\ub2a5\uc740 branch naming\uba85\uc774 \uc544\ub2cc\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_commit_example.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_commit_example.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_commit_example.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4548"}],"version-history":[{"count":6,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4548\/revisions"}],"predecessor-version":[{"id":4555,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4548\/revisions\/4555"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}