[{"content":" ⚡ TL;DR\ngit rebase -i HEAD~N 또는\ngit rebase -i \u0026lt;시작커밋해시\u0026gt;^ git commit --amend --author=\u0026#34;이름 \u0026lt;이메일\u0026gt;\u0026#34; git rebase --continue git push --force ⚠️ 주의: 이미 원격 저장소에 푸시된 커밋을 수정하면, 협업 중인 동료와 히스토리가 달라질 수 있으니 혼자 작업할 때만 사용하세요!\n📝 문제 상황: 잘못된 Git 작성자 정보 회사랑 개인 컴퓨터를 오가면서 같은 GitHub 저장소를 작업하다 보면, 어느 순간 커밋 작성자 정보가 꼬여버리는 일이 생깁니다.\n저는 편하자고 global 설정에 회사 계정의 이름과 이메일을 등록해두었는데, 그 설정이 그대로 커밋에 반영된 게 화근이었죠.\n그 결과, 제가 만든 커밋들이 회사 이메일로 올라가버리고, Contributor 목록에는 여러 명이 작업한 것처럼 보이게 됐습니다.\n그래서 커밋 하나하나 작성자 정보를 다시 써주고, 수정된 이력을 GitHub에 반영하는 과정을 거쳤습니다. 정리해보면 아래와 같습니다.\n🧩 상황 요약 개인용 계정과 회사용 계정이 뒤섞여서 커밋 작성자 정보가 꼬임 GitHub Contributor에 엉뚱한 이름이 올라감 커밋 히스토리를 정리해서 되돌리기로 결정 🛠️ 해결 과정 1. 인터랙티브 리베이스로 커밋 선택하기 git rebase -i HEAD~N 혹은 특정 커밋부터 리베이스하고 싶다면:\ngit rebase -i abc1234^ ^ 기호는 해당 커밋 바로 이전 커밋부터 리베이스를 시작하겠다는 뜻이에요.\n혹은 첫 커밋부터 싹 다 리베이스하고 싶다면:\ngit rebase -i --root 리스트가 열리면 pick을 edit으로 바꾸고 저장하면 됩니다.\n💡 빠르게 수정하는 팁 커서가 pick에 있으면 dw 입력해서 pick 삭제 → i e로 edit의 e만 입력해도 됨 (edit 대신 e만 써도 됨) 즉, 커서 올리고 dw, i, e 입력 후 저장(:wq)하면 끝!\n2. 작성자 정보 수정하기 git commit --amend --author=\u0026#34;새로운이름 \u0026lt;newemail@example.com\u0026gt;\u0026#34; 이렇게 하면 해당 커밋의 작성자를 내가 지정한 이름과 이메일로 덮어쓸 수 있습니다.\n여기서 설정한 작성자는 이 커밋에만 반영되기 때문에, global이나 local 설정을 건드릴 필요는 없어요.\n3. 리베이스 이어가기 git rebase --continue 하나의 커밋을 수정한 뒤에는 이렇게 입력해서 다음 커밋으로 넘어갈 수 있어요.\n하나씩 반복해서 전부 수정해주면 됩니다.\n4. GitHub에 반영하기 git push origin +main 마지막으로 강제로 푸시해줘야 원격 저장소도 바뀐 히스토리를 반영할 수 있어요.\n+main은 --force와 같은 역할을 하며, 강제로 기존 기록을 덮어씌웁니다.\n🧭 마무리 이런 일이 있고 난 후 저는 global 설정을 다 지워버렸습니다.\n대신 프로젝트마다 .git/config에서 로컬로만 이름과 이메일을 관리하고 있어요.\n조금 번거롭긴 해도, 앞으로 이런 실수를 반복하지 않기 위한 예방책이죠.\n🗂️ TMI\n참고로\u0026hellip; GitHub에 이미 푸시한 커밋 때문에 Contributor로 등록돼 버리면, 커밋을 고쳐도 Contributor 명단은 안 바뀝니다.\n전 결국 저장소를 지우고 새로 만들었습니다\u0026hellip; 😇\n(이건 진짜 최후의 수단이에요.)\n작은 실수 하나가 히스토리를 망가뜨릴 수 있다는 걸 느낀 경험이었습니다.\n혹시 비슷한 상황이 생겼다면, 이 글이 도움이 되었길 바랍니다.\n📚 참고 자료\n이 글은 madplay님의 블로그를 참고하여 작성되었습니다.\n","permalink":"https://seobaeksol.github.io/ko/posts/fix-wrong-git-author/","summary":"\u003cblockquote\u003e\n\u003cp\u003e⚡ TL;DR\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit rebase -i HEAD~N\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e또는\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit rebase -i \u0026lt;시작커밋해시\u0026gt;^\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit commit --amend --author\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;이름 \u0026lt;이메일\u0026gt;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit rebase --continue\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003egit push --force\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e⚠️ \u003cstrong\u003e주의:\u003c/strong\u003e 이미 원격 저장소에 푸시된 커밋을 수정하면, 협업 중인 동료와 히스토리가 달라질 수 있으니 혼자 작업할 때만 사용하세요!\u003c/p\u003e","title":"Git 커밋에 잘못된 사용자 정보가 남았을 때 정정하는 방법"},{"content":" Hyper-Dir 프로젝트를 시작하게 된 배경과 기술 스택, 그리고 UX 디자인 철학까지\n🧩 파일 탐색기가 아쉬웠다 Windows 기본 파일 탐색기는 많은 부분에서 만족스럽지만, 개발자 입장에서는 뭔가 부족한 느낌이 있었습니다.\n탭 기능 없음 키보드 기반 탐색 미비 멀티 패널 기능 부재 확장성과 커스터마이징 부족 이런 불만들을 매일 마주하다 보니 어느 순간 생각이 들었습니다.\n\u0026ldquo;차라리 내가 하나 만들어 보면 어떨까?\u0026rdquo;\n🚀 Hyper-Dir, 프로젝트의 시작 이렇게 해서 시작된 것이 Hyper-Dir입니다.\n단순한 파일 탐색기가 아니라, VSCode처럼 확장 가능하고, 생산성에 최적화된 탐색기를 목표로 합니다.\n주요 목표 ✅ 완전한 키보드 기반 탐색 ✅ 다중 패널 / 다중 탭 ✅ 플러그인 기반 UI 확장성 ✅ 직관적인 UX ✅ 빠른 퍼포먼스 🛠 Rust, Tauri, React를 선택한 이유 🦀 Rust 고성능, 메모리 안전성 파일 시스템 제어에 적합 Tauri와의 강력한 시너지 🪟 Tauri Electron 대비 훨씬 가벼움 WebView 기반의 네이티브 속도 Rust와 자연스럽게 연결됨 ⚛️ React 빠른 개발과 확장성 훌륭한 생태계 VSCode처럼 extension 구조 만들기에 적합 🧠 VSCode에서 영감을 받은 UI/UX Hyper-Dir의 UI는 VSCode를 적극적으로 참고했습니다.\n사이드바 → 디렉토리 구조 탭바 → 여러 경로 동시 탐색 메인 패널 → 파일 리스트 / 미리보기 상태바 → 현재 경로, 선택 파일 정보 단축키 → Ctrl+P, Ctrl+B 등 지원 개발자는 이미 VSCode에 익숙합니다.\n학습 비용이 낮고, 직관적인 UI가 중요했습니다.\n🗺 앞으로의 계획 Hyper-Dir은 이제 막 시작한 프로젝트입니다.\n앞으로는 다음과 같은 기능들을 차차 구현할 예정입니다:\nGit 연동 / 내장 터미널 사용자 플러그인 시스템 즐겨찾기 / 히스토리 관리 고급 검색 및 필터링 커맨드 팔레트 확장 💬 마무리하며 개발자로서, 매일 사용하는 도구를 직접 만든다는 건 굉장히 설레는 일입니다.\nHyper-Dir은 저의 불편함을 해결하기 위한 작은 시도였지만,\n다른 개발자들에게도 유용한 도구가 되길 바랍니다.\n프로젝트에 관심이 있으시다면 언제든지 피드백 또는 PR 환영합니다.\n함께 더 나은 도구를 만들어가요!\n🧑‍💻 프로젝트 GitHub 보기\n","permalink":"https://seobaeksol.github.io/ko/posts/2025-04-29-why-hyper-dir/","summary":"\u003cblockquote\u003e\n\u003cp\u003eHyper-Dir 프로젝트를 시작하게 된 배경과 기술 스택, 그리고 UX 디자인 철학까지\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"-파일-탐색기가-아쉬웠다\"\u003e🧩 파일 탐색기가 아쉬웠다\u003c/h2\u003e\n\u003cp\u003eWindows 기본 파일 탐색기는 많은 부분에서 만족스럽지만, \u003cstrong\u003e개발자 입장에서는 뭔가 부족한 느낌\u003c/strong\u003e이 있었습니다.\u003c/p\u003e","title":"나는 왜 Rust로 Windows 파일 탐색기를 만들기로 했는가"},{"content":"Welcome! 이건 내 첫 블로그 글이야!\n1 2 let test = 10; console.log(\u0026#34;test -\u0026gt;\u0026#34;, test); ","permalink":"https://seobaeksol.github.io/ko/posts/2025-04-29-hello-world/","summary":"\u003ch1 id=\"welcome\"\u003eWelcome!\u003c/h1\u003e\n\u003cp\u003e이건 내 첫 블로그 글이야!\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-ts\" data-lang=\"ts\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003elet\u003c/span\u003e \u003cspan style=\"color:#a6e22e\"\u003etest\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e10\u003c/span\u003e;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#a6e22e\"\u003econsole\u003c/span\u003e.\u003cspan style=\"color:#a6e22e\"\u003elog\u003c/span\u003e(\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;test -\u0026gt;\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#a6e22e\"\u003etest\u003c/span\u003e);\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e","title":"안녕, 세상아"},{"content":"","permalink":"https://seobaeksol.github.io/ko/profile/","summary":"","title":"프로필"}]