개발자들이 Git(깃)으로 협업하며 프로젝트 히스토리를 관리할 때, 커밋(commit) 메시지나 작성자 정보 등을 수정해야 하는 경우가 종종 발생합니다. 기존의 Git GUI(그래픽 사용자 인터페이스) 도구들은 커밋 순서 변경(reorder)이나 메시지 수정(reword)은 지원했지만, 커밋 날짜나 작성자(committer) 정보 같은 메타데이터를 세밀하게 편집하는 데는 한계가 있었습니다. 이러한 불편함을 해소하기 위해 'git-knife'라는 새로운 데스크톱 GUI 도구가 등장했습니다.
git-knife는 Git 커밋의 메시지, 작성자/커미터 이름 및 이메일, 작성일/커밋일 등을 스프레드시트처럼 표 형태의 GUI에서 직접 수정할 수 있도록 설계되었습니다. 이는 'git-filter-repo'나 'git commit-tree'와 같은 CLI(명령줄 인터페이스) 도구들이 제공하던 강력한 히스토리 재작성 기능을 GUI 환경으로 가져온 것입니다. 특히 여러 커밋의 메시지나 작성자 정보를 한 번에 변경하는 'Bulk Find & Replace' 기능을 지원하며, 정규 표현식(Regex)을 활용한 고급 검색 및 교체도 가능합니다. 예를 들어, 오래된 이메일 주소를 전체 히스토리에서 새로운 주소로 일괄 교체하는 작업에 유용하게 활용될 수 있습니다.
git-knife는 Git 자체를 재구현하는 대신 시스템에 설치된 Git CLI와 'git commit-tree' 명령어를 활용하여 커밋을 다시 생성합니다. 이 과정에서 기존 커밋의 파일 트리(tree)는 그대로 재사용하므로, 히스토리를 수정하더라도 실제 파일 내용은 변경되지 않습니다. 또한, 현재 작업 중인 워킹 트리(working tree)를 건드리지 않고 저장소의 참조(ref)를 직접 편집하므로 안전하게 작업할 수 있습니다. 모든 변경 사항은 실제 적용 전에 미리 확인할 수 있으며, 원격 저장소(remote)에 이미 푸시(push)된 히스토리를 건드릴 경우 경고를 표시하고, 변경 적용 전에는 자동으로 백업 참조를 생성하여 원클릭 복구를 지원합니다. 서명된 커밋(Signed Commit)의 경우 서명이 사라질 수 있음을 경고하고 다시 서명하는 옵션도 제공하여 보안과 무결성을 유지하려는 노력이 돋보입니다.
이 도구는 개발자들이 Git 히스토리를 더욱 유연하고 효율적으로 관리할 수 있도록 돕는다는 점에서 큰 의미를 가집니다. 특히, 프로젝트 초기에 잘못된 커밋 정보가 남았거나, 개인 정보 변경 등으로 인해 과거 히스토리를 수정해야 할 때 CLI의 복잡함 없이 직관적으로 작업을 수행할 수 있게 합니다. 다만, git-knife는 현재 비병합(non-merge) 커밋만 편집할 수 있으며, 커밋 재정렬(reorder), 스쿼시(squash), 드롭(drop), 병합 커밋 재작성, 스테이징/브랜치/원격 관리 기능은 아직 지원하지 않습니다. 또한, 재작성된 히스토리는 사용자가 직접 원격 저장소에 푸시해야 하며, 이미 공유된 히스토리를 변경할 경우 팀원들과의 조율이 필수적입니다. 그럼에도 불구하고, Tauri v2 기반의 데스크톱 앱으로 맥, 윈도우, 리눅스를 모두 지원하여 접근성이 높다는 장점이 있습니다.