10P by neo 5달전 | favorite | 댓글 1개

GitUI는 터미널에서 GUI의 편안함을 제공함

  • 키보드만으로 빠르고 직관적인 조작 가능
  • 핫키를 외울 필요 없는 상황에 맞는 도움말 제공
  • 변경 사항 검토, 커밋, 수정 커밋(훅 포함: pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • 파일, 헝크, 라인의 스테이징, 언스테이징, 되돌리기 및 리셋
  • 스태싱(저장, 적용, 삭제, 검사)
  • 원격지로부터의 푸시/페치
  • 브랜치 목록(생성, 이름 변경, 삭제, 체크아웃, 원격지)
  • 커밋 로그 탐색/검색, 커밋된 변경 사항의 차이(diff) 확인
  • 반응형 터미널 UI
  • 유동적인 조작을 위한 비동기 git API
  • 서브모듈 지원

동기

  • 터미널에서 대부분의 git 작업을 하지만, 인덱스, 커밋, 차이(diff), 스태시, 블레임, 로그와 같은 몇몇 사용 사례에서 git GUI를 자주 사용함.
  • 대형 리포지토리에서 인기 있는 git GUI들은 종종 반응하지 않거나 사용할 수 없게 됨.
  • GitUI는 터미널 내에서 git GUI의 사용자 경험과 편안함을 제공하면서 이식성이 높고 빠르며 무료이고 오픈소스임.

벤치마크

  • RustBerlin 미트업 발표에서 lazygit, tig, gitui를 비교하여 리눅스 git 리포지토리(90만 개 이상의 커밋 포함) 전체를 파싱함:
    • gitui: 24초 ✅, 0.17GB 메모리 ✅, 1.4MB 바이너리, 동결 없음 ✅, 충돌 없음
    • lazygit: 57초, 2.6GB 메모리, 16MB 바이너리, 동결 있음, 가끔 충돌
    • tig: 4분 20초, 1.3GB 메모리, 0.6MB 바이너리 ✅, 가끔 동결, 충돌 없음

1.0으로 가는 로드맵

  • 1.0을 선언하기 전의 고수준 목표:
    • 로그 탭에서 브랜치 구조 시각화(#81)
    • 인터랙티브 리베이스(#32)

알려진 제한 사항

  • 희소 리포지토리(sparse repo) 지원 없음(#1226)
  • GPG 서명 지원 없음(#97)
  • git-lfs 지원 없음(#1089)
  • https 필요한 credential.helper명시적으로 설정해야 함(#800)
  • 현재 이 도구는 git shell 을 완전히 대체하지는 않지만, 두 도구는 잘 협력함.
  • gitui의 우선순위는 git shell 에서 진행할 때 불편한 기능들, 예를 들어 스태싱, 라인이나 헝크 스테이징 등에 있음.
  • 결국 gitui를 원스톱 솔루션으로 만들 수 있을 것이나, 이를 위해서는 도움이 필요함 - 현재는 여가 시간 프로젝트임.
  • 모든 지원과 후원이 환영됨! ❤️

설치

  • GitUI는 베타 버전이며 버그와 누락된 기능이 있을 수 있음. 그러나 개인적인 사용에는 상당히 안정적이며 개발 중에도 사용 중임.
  • 다양한 패키지 관리자를 통해 설치 가능함.

빌드

  • 최소 지원 rust/cargo 버전: 1.65
  • openssl 종속성 빌드를 위한 요구 사항(https://docs.rs/openssl/latest/openssl/ 참조)
  • 완전한 테스트 스위트를 실행하기 위해서는 python이 필요함(python으로 호출 가능해야 함)
  • cargo install gitui를 통해 gitui를 빌드하고 설치하는 것이 가장 간단함.

자주 묻는 질문(FAQs)

  • FAQs 페이지 참조

진단

  • 로깅 활성화 상태에서 gitui -l로 실행하면 로그가 기록됨.

색상 테마

  • gitui는 밝은 테마와 어두운 테마의 터미널 모두에서 자동으로 작동함.
  • 모든 것을 취향에 맞게 사용자 정의할 수 있음.

키 바인딩

  • 키 바인딩은 사용자 정의가 가능함.

후원

영감

  • lazygit, tig, GitUp 등에서 영감을 받음.
  • 터미널 도구에서 맵 뷰를 사용할 수 있는 방법을 고안하는 것이 좋을 것임.

GN⁺의 의견

  • GitUI는 터미널을 선호하는 사용자들에게 GUI의 편리함을 제공하면서도 빠른 속도와 낮은 메모리 사용량을 자랑함. 이는 특히 대형 리포지토리를 다룰 때 매우 중요함.
  • 오픈소스 프로젝트로서, 개발자 커뮤니티의 지원과 기여를 통해 지속적으로 발전하고 있으며, 사용자의 피드백을 반영하여 기능을 개선해 나가고 있음.
  • GitUI는 개발자들이 터미널 환경에서도 효율적으로 git 작업을 수행할 수 있도록 도와주는 도구로, 특히 키보드 조작에 익숙한 사용자들에게 매우 유용할 것으로 보임.
Hacker News 의견
  • 키보드만으로 빠르고 직관적인 제어

    • 사용자는 좋은 의도로 프로그램을 만들었을 것이나, 설치 후 첫 시도에서 xterm 창 크기 조절이나 파일 트리 창의 크기 조절이 불가능했음. 키보드로도 해당 기능을 찾을 수 없었으며, 마우스로 크기 조절이 가능하다면 훨씬 쉽고 빠를 것임.
  • lazygit에서 영감을 받은 프로젝트

    • lazygit 사용자로서, lazygit에서 부족한 점이 무엇인지 궁금함. lazygit은 매우 유용하게 사용되고 있음.
  • 대형 리포지토리에서 인기 있는 git GUI의 실패

    • 대형 리포지토리나 깊은 디렉토리 구조에서 git 상태 확인이 오래 걸리는 문제는 경험함. GUI, TUI, 커맨드라인 간의 차이가 실제로 있는지 의문임.
  • 새로운 프로젝트에 대한 기대

    • GitExtensions가 리눅스 네이티브 애플리케이션으로 포팅되기를 바람. 다양한 UI를 시도했지만 GitExtensions만큼 좋은 것을 찾지 못함.
  • 클릭-앤-드래그 UI에 대한 질문

    • git에서 브랜치 작업을 드래그 앤 드롭으로 할 수 있는 UI가 있는지 궁금함.
  • Neogit 플러그인 사용 경험

    • 약 한 달 전부터 사용하기 시작한 Neogit 플러그인과 유사함. 처음에는 키 바인딩이 어려웠지만, 익숙해지면 이전 워크플로우보다 훨씬 빠름.
  • 개인적인 도구 사용 경험

    • 다양한 도구를 시도했지만, 항상 어떤 중요한 기능이 빠져 있거나 원하는 대로 작동하지 않아 결국 tig으로 돌아감. GitUI에서는 브랜치 구조를 잘 보여주는 기능이 부족함.
  • 일상적으로 사용하는 도구

    • 매일 사용하는 도구로서 매우 간단하고 훌륭함. 커밋에 서명하려면 Git 자체를 사용해야 함을 유의.
  • 관련 링크

    • GitUI: Terminal UI for Git, Terminal-UI for Git written in Rust 관련 해커뉴스 댓글 모음 링크 제공.
  • GUI 사용의 특정 장점에 대한 질문

    • GUI를 사용해본 적 없는 사용자가 GUI를 사용함으로써 얻을 수 있는 특정 장점이 무엇인지 배우고 싶어 함.