원문 캡처 · github.com
원문 캡처 · github.com

git-dupe는 프로젝트 파일과 함께 작업 트리에 두되 공개 저장소에는 포함하지 않을 개인 파일을 별도 Git 저장소로 관리하는 도구다. 메모, 에이전트 지침, 로컬 설정 등을 프로젝트의 git status와 git add -A에서 숨기고, 별도 원격 저장소를 통해 다른 컴퓨터와 동기화할 수 있다. Linux와 macOS에서 Git 2.43.0 이상, 3.0.0 미만이 필요하다.

프로젝트 복제본의 루트에서 개인 파일을 등록하고 전용 원격으로 보내는 방법은 다음과 같다.

sh
git dupe init # attach an empty dupe to this clone
git dupe add notes/ AGENTS.md # hide them from the project and stage them
git dupe commit -m "Notes and agent instructions" # a commit git log never shows
git dupe remote add origin <url> # an empty repository of your own
git dupe push -u origin HEAD # send the history there
git dupe clone <url> # in a clone elsewhere: the files come back

프로젝트의 Git 명령은 개인 파일을 보지 않고, git dupe 명령은 별도 저장소를 대상으로 한다. git dupe commit, log, branch, push, pull 등은 Git 명령과 옵션을 사용한다. 다만 status와 add는 숨긴 경로만 다루며, 프로젝트의 저장소나 그 원격을 대상으로 하는 push, pull, fetch, remote, clone은 일부 형태가 거부된다. 자세한 제한은 저장소의 Limits 안내에 정리돼 있다.

개인 저장소는 프로젝트의 .git/dupe 안에 있어 프로젝트를 복제해도 따라오지 않는다. 개인 파일을 원격에 보내면 해당 저장소를 읽을 수 있는 사람이 내용을 볼 수 있다. git-dupe는 파일을 암호화하지 않으므로 민감한 파일은 원격에 올리지 않거나 등록 전에 암호화해야 한다. 또한 일반 git clean -x는 숨긴 파일을 지울 수 있고, 공개 저장소에서 해당 경로에 파일을 가져오는 pull이나 checkout은 개인 파일을 덮어쓸 수 있다. 이 도구는 공개 Git 명령을 막지 않으므로 작업 전 커밋과 동기화에 주의해야 한다.

설치 파일은 릴리스 페이지에서 받을 수 있으며, 소스에서 설치하려면 Rust가 설치된 저장소 복제본에서 cargo install --path .를 실행한다. 동작 보장과 기술 설계는 제품 사양 및 기술 사양에서 확인할 수 있다.