10 điểm bởi GN⁺ 2024-01-08 | 1 bình luận | Chia sẻ qua WhatsApp

GitUI mang lại sự thoải mái của GUI trong terminal

  • Có thể thao tác nhanh và trực quan chỉ bằng bàn phím
  • Cung cấp trợ giúp theo ngữ cảnh nên không cần phải ghi nhớ phím tắt
  • Xem lại thay đổi, commit, sửa commit (bao gồm hook: pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • Stage, unstage, hoàn tác và reset theo file, hunk, dòng
  • Stash (lưu, áp dụng, xóa, kiểm tra)
  • Push/fetch với remote
  • Danh sách branch (tạo, đổi tên, xóa, checkout, remote)
  • Duyệt/tìm kiếm log commit, xem diff của các thay đổi đã commit
  • Giao diện terminal phản hồi nhanh
  • API git bất đồng bộ để thao tác mượt mà
  • Hỗ trợ submodule

Động lực

  • Dù thực hiện phần lớn công việc git trong terminal, tác giả vẫn thường dùng git GUI cho một số trường hợp như index, commit, diff, stash, blame và log.
  • Trên các repository lớn, những git GUI phổ biến thường bị treo hoặc không thể sử dụng.
  • GitUI mang lại trải nghiệm người dùng và sự thoải mái của git GUI ngay trong terminal, đồng thời có tính di động cao, nhanh, miễn phí và mã nguồn mở.

Benchmark

  • Trong bài trình bày tại meetup RustBerlin, lazygit, tig, gitui được so sánh bằng cách phân tích toàn bộ repository git của Linux (chứa hơn 900.000 commit):
    • gitui: 24 giây ✅, 0.17GB bộ nhớ ✅, binary 1.4MB, không bị treo ✅, không crash
    • lazygit: 57 giây, 2.6GB bộ nhớ, binary 16MB, có treo, đôi khi crash
    • tig: 4 phút 20 giây, 1.3GB bộ nhớ, binary 0.6MB ✅, đôi khi treo, không crash

Lộ trình hướng tới 1.0

  • Mục tiêu cấp cao trước khi công bố 1.0:
    • Trực quan hóa cấu trúc branch trong tab log (#81)
    • Interactive rebase (#32)

Các hạn chế đã biết

  • Không hỗ trợ sparse repo (#1226)
  • Không hỗ trợ ký GPG (#97)
  • Không hỗ trợ git-lfs (#1089)
  • credential.helper cần https phải được cấu hình tường minh (#800)
  • Hiện tại công cụ này chưa thay thế hoàn toàn được git shell, nhưng hai công cụ phối hợp rất tốt với nhau.
  • Ưu tiên của gitui là những tính năng bất tiện khi thực hiện trong git shell, ví dụ như stash, stage theo dòng hoặc hunk.
  • Cuối cùng có thể biến gitui thành một giải pháp one-stop, nhưng để làm được điều đó cần có sự trợ giúp - hiện tại đây là một dự án làm trong thời gian rảnh.
  • Mọi hỗ trợ và tài trợ đều được hoan nghênh! ❤️

Cài đặt

  • GitUI đang ở phiên bản beta và có thể có lỗi cũng như thiếu tính năng. Tuy nhiên, nó khá ổn định cho nhu cầu sử dụng cá nhân và cũng đang được dùng trong quá trình phát triển.
  • Có thể cài đặt thông qua nhiều trình quản lý gói khác nhau.

Build

  • Phiên bản rust/cargo tối thiểu được hỗ trợ: 1.65
  • Yêu cầu để build dependency openssl (tham khảo https://docs.rs/openssl/latest/openssl/)
  • Cần có Python để chạy đầy đủ bộ test (python phải có thể được gọi như vậy)
  • Cách đơn giản nhất để build và cài đặt gitui là dùng cargo install gitui.

Câu hỏi thường gặp (FAQs)

  • Xem trang FAQs

Chẩn đoán

  • Chạy gitui -l khi bật logging để ghi log.

Chủ đề màu sắc

  • gitui tự động hoạt động với cả terminal dùng theme sáng và theme tối.
  • Có thể tùy biến mọi thứ theo sở thích.

Phím gán

  • Có thể tùy chỉnh phím gán.

Tài trợ

Cảm hứng

  • Lấy cảm hứng từ lazygit, tig, GitUp và nhiều công cụ khác.
  • Sẽ rất hay nếu nghĩ ra cách sử dụng map view trong các công cụ terminal.

Ý kiến của GN⁺

  • GitUI mang đến sự tiện lợi của GUI cho những người dùng yêu thích terminal, đồng thời nổi bật với tốc độ nhanh và mức sử dụng bộ nhớ thấp. Điều này đặc biệt quan trọng khi làm việc với các repository lớn.
  • Là một dự án mã nguồn mở, nó tiếp tục phát triển nhờ sự hỗ trợ và đóng góp từ cộng đồng lập trình viên, đồng thời cải thiện tính năng bằng cách phản ánh phản hồi từ người dùng.
  • GitUI có vẻ là một công cụ giúp các nhà phát triển thực hiện công việc git hiệu quả ngay trong môi trường terminal, đặc biệt hữu ích với những người đã quen thao tác bằng bàn phím.

1 bình luận

 
GN⁺ 2024-01-08
Ý kiến trên Hacker News
  • Điều khiển nhanh và trực quan chỉ bằng bàn phím

    • Có lẽ tác giả đã tạo ra chương trình với ý định tốt, nhưng ở lần thử đầu tiên sau khi cài đặt thì không thể thay đổi kích thước cửa sổ xterm hay khung cây tệp. Cũng không tìm thấy chức năng đó bằng bàn phím, và nếu có thể đổi kích thước bằng chuột thì sẽ dễ và nhanh hơn nhiều.
  • Dự án lấy cảm hứng từ lazygit

    • Với tư cách là người dùng lazygit, tôi tò mò không biết lazygit còn thiếu điểm gì. lazygit đang được sử dụng rất hữu ích.
  • Sự thất bại của các git GUI phổ biến trên các kho mã lớn

    • Tôi đã từng gặp vấn đề việc kiểm tra trạng thái git mất nhiều thời gian trên các kho mã lớn hoặc cấu trúc thư mục sâu. Tôi nghi ngờ liệu thực sự có khác biệt giữa GUI, TUI và dòng lệnh hay không.
  • Kỳ vọng vào một dự án mới

    • Tôi mong GitExtensions được port thành ứng dụng native cho Linux. Tôi đã thử nhiều UI khác nhau nhưng chưa tìm thấy thứ gì tốt bằng GitExtensions.
  • Câu hỏi về UI click-and-drag

    • Tôi tò mò liệu có UI nào cho git cho phép thao tác nhánh bằng kéo và thả hay không.
  • Trải nghiệm sử dụng plugin Neogit

    • Nó khá giống plugin Neogit mà tôi bắt đầu dùng từ khoảng một tháng trước. Lúc đầu key binding hơi khó, nhưng khi đã quen thì nhanh hơn workflow trước đây rất nhiều.
  • Trải nghiệm sử dụng công cụ cá nhân

    • Tôi đã thử nhiều công cụ khác nhau, nhưng cuối cùng luôn quay về tig vì lúc nào cũng có một tính năng quan trọng nào đó bị thiếu hoặc hoạt động không đúng như tôi muốn. GitUI còn thiếu khả năng hiển thị tốt cấu trúc nhánh.
  • Công cụ sử dụng hằng ngày

    • Là một công cụ tôi dùng mỗi ngày, nó rất đơn giản và tuyệt vời. Lưu ý rằng nếu muốn ký commit thì vẫn phải dùng chính Git.
  • Liên kết liên quan

    • Cung cấp liên kết tổng hợp các bình luận trên Hacker News liên quan đến GitUI: Terminal UI for Git, Terminal-UI for Git written in Rust.
  • Câu hỏi về lợi thế cụ thể của việc dùng GUI

    • Một người chưa từng dùng GUI muốn tìm hiểu những lợi thế cụ thể mà họ có thể nhận được khi sử dụng GUI.