프로젝트 소개
# manygit — 다중 저장소 Git CLI 관리자
manygit은 전체 git 저장소 **트리**에 lazygit 스타일 터미널 UI를 제공하는 단일 CLI 도구입니다. 폴더를 지정하면 그 아래 모든 저장소가 한 화면에 나타나며, 브랜치와 앞서/뒤처짐/변경 여부를 표시합니다. 강조된 저장소에서 fetch, pull, push, 브랜치 전환을 수행할 수 있고, 커밋 그래프 보기, 스크립트 실행, GitHub 풀 리퀘스트 탐색(`gh` CLI 설치 시)도 가능합니다.
`gita`나 `mani` 같은 배치 실행기와 달리, 저장소를 등록할 설정 파일이나 출력을 다시 읽을 필요가 없습니다. manygit은 폴더를 탐색해 저장소를 자동으로 발견하며, 목록에 머물러 작업합니다.
## 주요 기능
- **자동 발견**: 폴더(기본 깊이 3)를 스캔해 git 저장소를 찾고 상위 디렉터리별로 그룹화합니다.
- **통합 상태 보기**: 브랜치, 앞서/뒤처짐 수, 변경 상태, 로컬 전용 저장소를 한눈에 확인합니다.
- **직접 작업**: 동기화(fetch + fast-forward pull), push, 브랜치 체크아웃, 변경 사항 폐기(확인 포함), 하나 또는 모든 저장소 fetch.
- **커밋 그래프**: 커밋 기록의 전체 화면 시각화.
- **스크립트 실행기**: 여러 저장소에 걸쳐 스크립트 정의 및 실행.
- **GitHub PR 창**: 열린 PR 및 리뷰 요청 목록(`gh` CLI 필요), PR 브랜치 한 키 체크아웃.
- **일반 영어 git**: "rebase current onto master" 같은 요청을 입력하면 AI 하네스가 git 명령으로 변환해 확인을 받습니다.
- **저장소 내 셸**: 강조된 저장소에서 지속적 셸 프롬프트를 열어 임의 명령 실행.
- **필터링**: 이름, 브랜치, 태그로 저장소 필터링; 변경/앞서/뒤처짐 있는 저장소만 표시.
- **테마**: 여러 색상 테마(default, serika_dark, dracula, nord, catppuccin, 8008).
- **자체 업데이트**: 변경 로그 표시가 있는 내장 업데이터.
## 설치
**Linux**
```bash
curl -fsSL https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.sh | bash
```
**macOS**
```bash
brew tap rabeeh-ta/manygit && brew trust rabeeh-ta/manygit && brew install manygit
```
**Windows (PowerShell)**
```powershell
irm https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.ps1 | iex
```
기타 방법: `go install github.com/rabeeh-ta/manygit@latest` (Go 1.24+), 또는 소스에서 빌드. 설치 프로그램에 태그를 전달해 특정 버전을 고정할 수 있습니다(예: `bash -s -- v1.0.7`).
## 사용법
```bash
manygit # 현재 디렉터리 스캔
manygit --root ~/work # 특정 폴더 스캔
manygit stats # GitHub 다운로드 통계 출력
```
## 키 바인딩 (요약)
- `1`-`7`: 창 포커스 (Repos, Scripts, Branches, PRs, Graph, Changes, Output)
- `j`/`k`: 포커스된 패널 내 이동
- `enter`: 상황별 (브랜치 보기, 체크아웃, 스크립트 실행, PR 브랜치 체크아웃)
- `s`/`p`: 강조된 저장소 동기화(fetch + ff-pull) / push
- `d`/`D`: 변경 사항 폐기(추적만 / 추적+비추적)
- `f`/`r`: 하나 fetch / 모두 재fetch
- `g`: 전체 화면 커밋 그래프
- `n`: 전체 화면 뉴스 피드(AI 요약 헤드라인)
- `t`: 최신 태그 표시 전환
- `F`: 변경/앞서/뒤처짐 있는 저장소로 필터링
- `/`: 목록 필터링(저장소는 이름·브랜치, 브랜치는 이름, 스크립트는 이름)
- `:`: AI 하네스를 통한 일반 영어 git 명령
- `!`: 강조된 저장소에서 셸 열기
- `o`: 편집기에서 저장소 열기
- `z`: 포커스된 창 확대
- `esc`: 상태 한 단계 뒤로
- `?`: 도움말 오버레이(키 바인딩 및 설정)
- `q` 또는 `esc esc`: 종료
## 설정
선택적 설정 파일 `~/.config/manygit/config.yml`:
```yaml
max_depth: 3 # 루트 아래 검색할 폴더 깊이 (1-5)
open_cmd: code # `o`에 사용할 편집기 명령
theme: default # default | serika_dark | dracula | nord | catppuccin | 8008
status_glyphs: unicode # 또는 "ascii"
```
## 안전성
- manygit은 실행 폴더에 절대 쓰지 않습니다.
- 단독으로는 절대 force-push, merge, rebase를 하지 않습니다; `s`는 fetch + fast-forward 전용 pull, `p`는 일반 push입니다.
- 단독으로 제공하는 유일한 파괴적 작업은 변경 사항 폐기(`d`/`D`)이며, 항상 확인을 요청합니다.
- `!` 셸과 `:` AI 명령은 의도적 예외로, 실행 전 명령 표시, 인자 목록으로 git 실행(셸 파이프 없음), 위험한 플래그 거부 같은 안전장치가 있습니다.
## 릴리스 (관리자)
버전 태그를 푸시하면(예: `git tag v0.2.0 && git push origin v0.2.0`) GitHub Actions가 바이너리를 빌드하고 릴리스를 게시합니다; 설치 프로그램과 자체 업데이터가 자동으로 인식합니다. 릴리스 노트가 앱 내 변경 로그가 됩니다.
## 온라인 체험
TUI의 작동 포트가 [랜딩 페이지](https://rabeeh-ta.github.io/manygit/)에서 실행됩니다 — git은 가짜지만 키는 실제입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.