{"id":30240331,"url":"https://github.com/fedify-dev/ossca2025-git-rebase-lecture","last_synced_at":"2025-08-15T04:37:39.404Z","repository":{"id":305100574,"uuid":"1021841506","full_name":"fedify-dev/ossca2025-git-rebase-lecture","owner":"fedify-dev","description":"OSSCA 2025 Git 리베이스 실습","archived":false,"fork":false,"pushed_at":"2025-07-19T03:33:08.000Z","size":15,"stargazers_count":1,"open_issues_count":0,"forks_count":11,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-05T14:46:50.986Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fedify-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-18T03:22:56.000Z","updated_at":"2025-07-19T06:25:33.000Z","dependencies_parsed_at":"2025-07-18T10:50:00.843Z","dependency_job_id":"40efc150-e913-48c2-bf11-36664cc1289d","html_url":"https://github.com/fedify-dev/ossca2025-git-rebase-lecture","commit_stats":null,"previous_names":["fedify-dev/ossca2025-git-rebase-lecture"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fedify-dev/ossca2025-git-rebase-lecture","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedify-dev%2Fossca2025-git-rebase-lecture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedify-dev%2Fossca2025-git-rebase-lecture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedify-dev%2Fossca2025-git-rebase-lecture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedify-dev%2Fossca2025-git-rebase-lecture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fedify-dev","download_url":"https://codeload.github.com/fedify-dev/ossca2025-git-rebase-lecture/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fedify-dev%2Fossca2025-git-rebase-lecture/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270524378,"owners_count":24600195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-15T04:37:32.517Z","updated_at":"2025-08-15T04:37:39.384Z","avatar_url":"https://github.com/fedify-dev.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"OSSCA 2025 Git 리베이스 실습\n============================\n\n이 저장소는 OSSCA 2025 멘티들을 위한 Git 리베이스 실습 교보재입니다.\n\n\n리베이스란?\n-----------\n\nGit에서 **리베이스**(rebase)란 이름 그대로 커밋들의 기반을 바꾸는 것을 뜻합니다.\n예를 들어 다음과 같은 두 개의 브랜치가 있을 때:\n\n~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: a\n---\ngitGraph BT:\n  commit id: \"공통 조상 1\"\n  commit id: \"공통 조상 2\"\n  commit id: \"공통 조상 3\"\n  branch b\n  commit id: \"B 커밋 1\"\n  commit id: \"B 커밋 2\"\n  checkout a\n  commit id: \"A 커밋 1\"\n  commit id: \"A 커밋 2\"\n  commit id: \"A 커밋 3\"\n~~~~\n\n다음과 같이 선형화하는 것을 뜻합니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: a\n---\ngitGraph BT:\n  commit id: \"공통 조상 1\"\n  commit id: \"공통 조상 2\"\n  commit id: \"공통 조상 3\"\n  commit id: \"B 커밋 1\"\n  commit id: \"B 커밋 2\"\n  commit id: \"A 커밋 1\"\n  commit id: \"A 커밋 2\"\n  commit id: \"A 커밋 3\"\n~~~~\n\n\n충돌 없는 경우\n--------------\n\n가장 먼저 실습할 리베이스는 충돌이 없는 경우입니다. 우선, 다음과 같이 공통된\n과거 커밋을 가진 두 개의 브랜치가 있습니다 (위로 갈 수록 최신):\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: no-conflict-a\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    branch no-conflict-b\n    checkout no-conflict-b\n    commit id: \"Flex\"\n    checkout no-conflict-a\n    commit id: \"제목에 에모지 추가\"\n~~~~\n\n일단 우리는 `no-conflict-a` 브랜치에 있다고 가정합시다:\n\n~~~~ sh\ngit switch no-conflict-a\n~~~~\n\n만일 우리가 리베이스를 하지 않고 머지를 한다면(`git merge no-conflict-b`),\n다음과 같은 커밋 그래프가 생성 될 겁니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: no-conflict-a\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    branch no-conflict-b\n    checkout no-conflict-b\n    commit id: \"Flex\"\n    checkout no-conflict-a\n    commit id: \"제목에 에모지 추가\"\n    merge no-conflict-b id: \"머지 커밋\"\n~~~~\n\n하지만 이는 우리가 원하는 게 아닙니다. 우리의 목표는 리베이스를 하여 다음과 같은\n커밋 그래프를 만드는 것입니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: no-conflict-a\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    commit id: \"Flex\" tag: \"no-conflict-b\"\n    commit id: \"제목에 에모지 추가\"\n~~~~\n\n이를 위해서는 `no-conflict-b` 브랜치를 `no-conflict-a` 브랜치에 리베이스하면\n됩니다:\n\n~~~~ sh\ngit rebase origin/no-conflict-b\n~~~~\n\n리베이스는 커밋 역사를 파괴적으로 수정하기 때문에, 푸시하려고 하면 오류가\n납니다:\n\n~~~~ sh\ngit push origin no-conflict-a\n~~~~\n\n~~~~\nTo github.com:YOUR-NAME/ossca2025-git-rebase-lecture.git\n ! [rejected]        no-conflict-a -\u003e no-conflict-a (non-fast-forward)\nerror: failed to push some refs to 'github.com:YOUR-NAME/ossca2025-git-rebase-lecture.git'\nhint: Updates were rejected because the tip of your current branch is behind\nhint: its remote counterpart. If you want to integrate the remote changes,\nhint: use 'git pull' before pushing again.\nhint: See the 'Note about fast-forwards' in 'git push --help' for details.\n~~~~\n\n따라서 `-f`/`--force` 옵션을 함께 줘야 푸시할 수 있습니다:\n\n~~~~ sh\ngit push --force origin no-conflict-a\n~~~~\n\n\n충돌 있는 경우\n--------------\n\n다음으로 실습할 리베이스는 충돌이 있는 경우입니다. 우선, 다음과 같이 공통된\n과거 커밋을 가진 두 개의 브랜치가 있습니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: w-conflict-a\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    branch w-conflict-b\n    checkout w-conflict-b\n    commit id: \"'모두들' 추가\"\n    checkout w-conflict-a\n    commit id: \"Flex\"\n~~~~\n\n일단 우리는 `w-conflict-a` 브랜치에 있다고 가정합시다:\n\n~~~~ sh\ngit switch w-conflict-a\n~~~~\n\n이번 목표는 리베이스를 하여 다음과 같은 커밋 그래프를 만드는 것입니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: w-conflict-a\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    commit id: \"'모두들' 추가\" tag: \"w-conflict-b\"\n    commit id: \"Flex\"\n~~~~\n\n아까와 마찬가지로 `git rebase` 커맨드를 이용하면 됩니다:\n\n~~~~ sh\ngit rebase origin/w-conflict-b\n~~~~\n\n하지만 *README.md* 파일에 충돌이 있기 때문에 다음과 같은 메시지가 뜰 겁니다:\n\n~~~~\nAuto-merging README.md\nCONFLICT (content): Merge conflict in README.md\nerror: could not apply 920b76b... Flex\nhint: Resolve all conflicts manually, mark them as resolved with\nhint: \"git add/rm \u003cconflicted_files\u003e\", then run \"git rebase --continue\".\nhint: You can instead skip this commit: run \"git rebase --skip\".\nhint: To abort and get back to the state before \"git rebase\", run \"git rebase --abort\".\nhint: Disable this message with \"git config set advice.mergeConflict false\"\nCould not apply 920b76b... # Flex\n~~~~\n\n현재 어떤 상황인지 파악하기 위해 `git status` 커맨드를 실행해 봅니다:\n\n~~~~\ninteractive rebase in progress; onto f67d9aa\nLast command done (1 command done):\n   pick 920b76b # Flex\nNo commands remaining.\nYou are currently rebasing branch 'w-conflict-a' on 'f67d9aa'.\n  (fix conflicts and then run \"git rebase --continue\")\n  (use \"git rebase --skip\" to skip this patch)\n  (use \"git rebase --abort\" to check out the original branch)\n\nUnmerged paths:\n  (use \"git restore --staged \u003cfile\u003e...\" to unstage)\n  (use \"git add \u003cfile\u003e...\" to mark resolution)\n\tboth modified:   README.md\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\n~~~~\n\n사실 위 메시지 안에 여러분이 어떤 조치를 취해야 할 지 다 써져 있습니다.\n`both modified:   README.md`라는 메시지는 *README.md* 파일이 `w-conflict-a` 및\n`w-conflict-b` 브랜치 양쪽에서 수정되었기 때문에 충돌한다는 표시입니다.\n\n이 때는 *README.md* 파일을 열어 수동으로 충돌을 해결해 주어야 합니다.\n*README.md* 파일을 열어보면 파일 내용이 다음과 같이 되어 있는 것을 볼 수\n있습니다:\n\n~~~~ markdown\nGit 리베이스 실습\n=================\n\n이 파일은 Git 리베이스 실습을 위한 것입니다.\n\n이 실습을 통해 Git 리베이스의 기본 개념과 사용법을 익힐 수 있습니다.\n\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD\n모두들 화이팅!\n||||||| parent of 920b76b (Flex)\n화이팅!\n=======\n화이팅! 💪\n\u003e\u003e\u003e\u003e\u003e\u003e\u003e 920b76b (Flex)\n~~~~\n\n -  **`\u003c\u003c\u003c\u003c\u003c\u003c\u003c`부터 `|||||||`까지**가 리베이스 하려고 했던 `w-conflict-b`에서\n    만들어진 변경이고,\n -  **`|||||||`부터 `=======`까지**가 `w-conflict-a`와 `w-conflict-b`의 공통\n    부모 커밋일 때의 내용, 즉 양쪽으로부터 아무런 변경이 적용되기 이전의\n    내용이고,\n -  **`=======`부터 `\u003e\u003e\u003e\u003e\u003e\u003e\u003e`까지가 리베이스 되려고 하는 `w-conflict-a`,\n    즉 현재 브랜치에서 변경된 내용입니다.\n\n이를 정리하면 다음과 같습니다:\n\n -  **`w-conflict-a` 브랜치**(현재 브랜치)에서는 `화이팅!`이 `화이팅! 💪`으로\n    바뀌었습니다.\n -  **`w-conflict-b` 브랜치**에서는 `화이팅!`이 `모두들 화이팅!`으로\n    바뀌었습니다.\n\n즉, 양쪽의 변경을 모두 합치면 `모두들 화이팅! 💪` 정도가 될 것입니다. 따라서\n*README.md* 파일의 내용을 다음과 같이 변경해야 합니다:\n\n~~~~ markdown\nGit 리베이스 실습\n=================\n\n이 파일은 Git 리베이스 실습을 위한 것입니다.\n\n이 실습을 통해 Git 리베이스의 기본 개념과 사용법을 익힐 수 있습니다.\n\n모두들 화이팅! 💪\n~~~~\n\n이렇게 양쪽의 변경을 사람이 직접 합치는 작업을 **충돌 해결**(conflict\nresolution)이라고 합니다. 충돌을 해결했으면, Git에게 충돌한 파일이 해결되었다고\n표시해 주어야 합니다. `git add` 커맨드로 해결되었다는 표시를 해 줄 수 있습니다:\n\n~~~~ sh\ngit add README.md\n~~~~\n\n충돌을 해결했으면 다시 `git status` 커맨드로 현재 상황을 파악해 봅니다:\n\n~~~~\ninteractive rebase in progress; onto f67d9aa\nLast command done (1 command done):\n   pick 920b76b # Flex\nNo commands remaining.\nYou are currently rebasing branch 'w-conflict-a' on 'f67d9aa'.\n  (all conflicts fixed: run \"git rebase --continue\")\n\nChanges to be committed:\n  (use \"git restore --staged \u003cfile\u003e...\" to unstage)\n\tmodified:   README.md\n\n~~~~\n\n이제는 `modified:   README.md`로 상태가 바뀌어 있는 것을 볼 수 있습니다.\n충돌이 해결되었으니 이제 리베이스를 재개해야 합니다. 다음 커맨드로 재개할 수\n있습니다:\n\n~~~~ sh\ngit rebase --continue\n~~~~\n\n위 커맨드를 입력하면 커밋 메시지를 입력하는 편집기가 뜹니다. 커밋 메시지는 이미\n채워져 있기 때문에 대부분 그대로 두면 됩니다.\n\n이제 리베이스가 완료되었습니다. `git log` 커맨드나 Git 역사를 GUI로 보여주는\n앱을 통해 커밋이 다음과 같이 잘 구성되었는지 확인해 봅시다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: w-conflict-a\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    commit id: \"'모두들' 추가\" tag: \"w-conflict-b\"\n    commit id: \"Flex\"\n~~~~\n\n앞서와 마찬가지로, 리베이스는 Git의 커밋 역사를 파괴적으로 수정하기 때문에\n그냥 `git push`를 하려고 하면 오류가 납니다. `-f`/`--force` 옵션을 주어\n강제로 푸시합니다:\n\n~~~~ sh\ngit push --force origin w-conflict-a\n~~~~\n\n\n커밋 합치기\n-----------\n\n마지막으로 실습할 것을 2개 이상의 커밋을 하나로 합치는 것입니다. 다음과 같은 커밋들이 있습니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: fixup\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    commit id: \"'모두들' 추가\"\n    commit id: \"파일 → 문서\"\n    commit id: '\"리베이스\"에 \"rebase\" 영문 병기'\n    commit id: \"'모두들' 오타 수정\"\n~~~~\n\n일단 우리는 `fixup` 브랜치에 있다고 가정합시다:\n\n~~~~ sh\ngit switch fixup\n~~~~\n\n두 번째 커밋인 `'모두들' 추가`와 마지막 커밋인 `'모두들' 오타 수정`을 다음과 같이 합치는 것이 목표입니다:\n\n~~~~ mermaid\n---\nconfig:\n  gitGraph:\n    mainBranchName: fixup\n---\ngitGraph BT:\n    commit id: \"첫 커밋\"\n    commit id: \"'모두들' 추가\" tag: \"합쳐짐: '모두들' 오타 수정\"\n    commit id: \"파일 → 문서\"\n    commit id: '\"리베이스\"에 \"rebase\" 영문 병기'\n~~~~\n\n우선 현재의 커밋 목록을 `git log --graph` 커맨드로 확인합시다 (최신순으로 나옵니다):\n\n~~~~\n* commit fd7d20fe822f10ffee308a05c688e2436384dea5\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:51:50 +0900\n| \n|     '모두들' 오타 수정\n| \n* commit a8a8830062223c2b5b5444bf5aa44dddade0467b\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:51:23 +0900\n| \n|     \"리베이스\"에 \"rebase\" 영문 병기\n| \n* commit bbec26eab187183bf2e731c99a6b74dfa7b1914f\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:50:47 +0900\n| \n|     파일 → 문서\n| \n* commit 9aae45aba657f3132744402b3cc066bf86542d12\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:49:52 +0900\n| \n|     '모두들' 추가\n| \n* commit bc48c3fef401e08fdf23f3cc17a8c4c5a9869554\n  Author: Hong Minhee \u003chong@minhee.org\u003e\n  Date:   2025-07-18 10:45:57 +0900\n  \n      첫 커밋\n~~~~\n\n우리는 `fd7d20fe822f10ffee308a05c688e2436384dea5` 커밋(`'모두들' 오타 수정`)을 `9aae45aba657f3132744402b3cc066bf86542d12` 커밋(`'모두들' 추가`)에 합치고자 합니다. 이를 위해서는 `git rebase` 커맨드의 `-i`/`--interactive` 옵션을 써야 합니다.\n\n우리가 수정하려는 가장 오래된 커밋이 `9aae45aba657f3132744402b3cc066bf86542d12` 커밋(`'모두들' 추가`)이므로, 그보다 바로 앞 커밋인 `bc48c3fef401e08fdf23f3cc17a8c4c5a9869554` 커밋(`첫 커밋`)을 대상으로 인터랙티브 리베이스를 실행합니다:\n\n~~~~ sh\ngit rebase --interactive bc48c3fef401e08fdf23f3cc17a8c4c5a9869554\n~~~~\n\n그러면 편집기가 실행되면서 다음과 같은 텍스트를 조작하게 됩니다. 첫 줄이 가장 오래된 커밋이고, 마지막 줄이 가장 최신 커밋입니다:\n\n~~~~\npick 9aae45a # '모두들' 추가\npick bbec26e # 파일 → 문서\npick a8a8830 # \"리베이스\"에 \"rebase\" 영문 병기\npick fd7d20f # '모두들' 오타 수정\n\n# Rebase bc48c3f..fd7d20f onto bc48c3f (4 commands)\n#\n# Commands:\n# p, pick \u003ccommit\u003e = use commit\n# r, reword \u003ccommit\u003e = use commit, but edit the commit message\n# e, edit \u003ccommit\u003e = use commit, but stop for amending\n# s, squash \u003ccommit\u003e = use commit, but meld into previous commit\n# f, fixup [-C | -c] \u003ccommit\u003e = like \"squash\" but keep only the previous\n#                    commit's log message, unless -C is used, in which case\n#                    keep only this commit's message; -c is same as -C but\n#                    opens the editor\n# x, exec \u003ccommand\u003e = run command (the rest of the line) using shell\n# b, break = stop here (continue rebase later with 'git rebase --continue')\n# d, drop \u003ccommit\u003e = remove commit\n# l, label \u003clabel\u003e = label current HEAD with a name\n# t, reset \u003clabel\u003e = reset HEAD to a label\n# m, merge [-C \u003ccommit\u003e | -c \u003ccommit\u003e] \u003clabel\u003e [# \u003coneline\u003e]\n#         create a merge commit using the original merge commit's\n#         message (or the oneline, if no original merge commit was\n#         specified); use -c \u003ccommit\u003e to reword the commit message\n# u, update-ref \u003cref\u003e = track a placeholder for the \u003cref\u003e to be updated\n#                       to this position in the new commits. The \u003cref\u003e is\n#                       updated at the end of the rebase\n#\n# These lines can be re-ordered; they are executed from top to bottom.\n#\n# If you remove a line here THAT COMMIT WILL BE LOST.\n#\n# However, if you remove everything, the rebase will be aborted.\n#\n~~~~\n\n그럼 이 텍스트를 다음과 같이 편집합니다. `fd7d20f` 커밋(`'모두들' 오타 수정`)을 `9aae45a` 커밋(`'모두들' 추가`) 바로 아래로 올리고, `pick`이라는 키워드를 `fixup`으로 바꿉니다:\n\n~~~~\npick 9aae45a # '모두들' 추가\nfixup fd7d20f # '모두들' 오타 수정 ← 위치가 바뀌고 pick → fixup으로 고침\npick bbec26e # 파일 → 문서\npick a8a8830 # \"리베이스\"에 \"rebase\" 영문 병기\n~~~~\n\n텍스트를 저장하고 편집기를 종료하면 리베이스가 진행됩니다:\n\n~~~~\nSuccessfully rebased and updated refs/heads/fixup.\n~~~~\n\n다시 한 번 `git log --graph` 커맨드를 실행해 보면, 아래와 같이 커밋이 4개로 하나 준 것을 확인할 수 있습니다(각각의 커밋 ID는 아래와 다를 수 있습니다):\n\n~~~~\n* commit 180989f281575ffa2991905e0ad0f59d265ec55c\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:51:23 +0900\n| \n|     \"리베이스\"에 \"rebase\" 영문 병기\n| \n* commit 7f40f552e91ddd5ea2f42e602149c99fbd0b3f1e\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:50:47 +0900\n| \n|     파일 → 문서\n| \n* commit 4dfcf927045d02cad9713ed1044d6214854488d9\n| Author: Hong Minhee \u003chong@minhee.org\u003e\n| Date:   2025-07-19 11:49:52 +0900\n| \n|     '모두들' 추가\n| \n* commit bc48c3fef401e08fdf23f3cc17a8c4c5a9869554\n  Author: Hong Minhee \u003chong@minhee.org\u003e\n  Date:   2025-07-18 10:45:57 +0900\n  \n      첫 커밋\n~~~~\n\n`'모두들' 추가`에 해당하는 커밋(커밋 ID는 여러분의 `git log` 커맨드 결과에서 복사하세요)을 `git show` 커맨드로 확인하면 2개의 수정이 하나로 합쳐진 것을 확인할 수 있습니다:\n\n~~~~ sh\ngit show 4dfcf927045d02cad9713ed1044d6214854488d9\n~~~~\n\n~~~~ diff\ncommit 4dfcf927045d02cad9713ed1044d6214854488d9\nAuthor: Hong Minhee \u003chong@minhee.org\u003e\nDate:   2025-07-19 11:49:52 +0900\n\n    '모두들' 추가\n\ndiff --git a/README.md b/README.md\nindex 4cff94d..9cda9da 100644\n--- a/README.md\n+++ b/README.md\n@@ -5,4 +5,4 @@ Git 리베이스 실습\n \n 이 실습을 통해 Git 리베이스의 기본 개념과 사용법을 익힐 수 있습니다.\n \n-화이팅!\n+모두들 화이팅!\n~~~~\n\n\n참고 자료\n---------\n\n리베이스에 대해 좀 더 자세히 알고 싶은 분들께는 다음 자료들을 추천합니다:\n\n- [기록 다시 쓰기](https://www.atlassian.com/ko/git/tutorials/rewriting-history)\n- [Git 도구 - 히스토리 단장하기](https://git-scm.com/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%ed%9e%88%ec%8a%a4%ed%86%a0%eb%a6%ac-%eb%8b%a8%ec%9e%a5%ed%95%98%ea%b8%b0)\n- [`git-rebase`](https://git-scm.com/docs/git-rebase)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedify-dev%2Fossca2025-git-rebase-lecture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffedify-dev%2Fossca2025-git-rebase-lecture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffedify-dev%2Fossca2025-git-rebase-lecture/lists"}