10 คะแนน โดย GN⁺ 2024-01-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

GitUI มอบความสะดวกแบบ GUI ภายในเทอร์มินัล

  • ใช้งานได้รวดเร็วและเข้าใจง่ายด้วยคีย์บอร์ดล้วน
  • มีคำแนะนำตามบริบท จึงไม่จำเป็นต้องท่องจำฮอตคีย์
  • ตรวจสอบการเปลี่ยนแปลง, คอมมิต, แก้ไขคอมมิต (รวม hook: pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • สเตจ, ยกเลิกการสเตจ, ย้อนกลับ และรีเซ็ตไฟล์, hunk และบรรทัด
  • Stash (บันทึก, นำมาใช้, ลบ, ตรวจสอบ)
  • Push/Fetch กับรีโมต
  • รายการบรานช์ (สร้าง, เปลี่ยนชื่อ, ลบ, checkout, รีโมต)
  • สำรวจ/ค้นหา commit log และตรวจดู diff ของการเปลี่ยนแปลงที่คอมมิตแล้ว
  • เทอร์มินัล UI แบบ responsive
  • Git API แบบ asynchronous เพื่อการใช้งานที่ลื่นไหล
  • รองรับ submodule

แรงจูงใจ

  • แม้จะทำงาน git ส่วนใหญ่ในเทอร์มินัล แต่ก็มักใช้ git GUI บ่อยครั้งในบางงาน เช่น index, commit, diff, stash, blame และ log
  • สำหรับรีโพซิทอรีขนาดใหญ่ git GUI ยอดนิยมมักค้างหรือใช้งานไม่ได้
  • GitUI มอบประสบการณ์และความสะดวกแบบ git GUI ภายในเทอร์มินัล พร้อมความสามารถในการพกพาสูง รวดเร็ว ฟรี และเป็นโอเพนซอร์ส

เบนช์มาร์ก

  • ในการบรรยายที่ RustBerlin meetup ได้เปรียบเทียบ lazygit, tig, gitui โดยพาร์สรีโพซิทอรี git ของ Linux ทั้งหมด (มีมากกว่า 900,000 commit):
    • gitui: 24 วินาที ✅, หน่วยความจำ 0.17GB ✅, ไบนารี 1.4MB, ไม่ค้าง ✅, ไม่แครช
    • lazygit: 57 วินาที, หน่วยความจำ 2.6GB, ไบนารี 16MB, มีอาการค้าง, แครชเป็นครั้งคราว
    • tig: 4 นาที 20 วินาที, หน่วยความจำ 1.3GB, ไบนารี 0.6MB ✅, ค้างเป็นครั้งคราว, ไม่แครช

โรดแมปสู่ 1.0

  • เป้าหมายระดับสูงก่อนประกาศ 1.0:
    • แสดงโครงสร้างบรานช์ในแท็บ log (#81)
    • interactive rebase (#32)

ข้อจำกัดที่ทราบ

  • ไม่รองรับ sparse repo (#1226)
  • ไม่รองรับการเซ็น GPG (#97)
  • ไม่รองรับ git-lfs (#1089)
  • credential.helper ที่ต้องใช้กับ https จำเป็นต้องตั้งค่า อย่างชัดเจน (#800)
  • ปัจจุบันเครื่องมือนี้ยังไม่สามารถแทนที่ git shell ได้ทั้งหมด แต่ทั้งสองเครื่องมือทำงานร่วมกันได้ดี
  • ลำดับความสำคัญของ gitui คือฟีเจอร์ที่ทำใน git shell แล้วไม่สะดวก เช่น stash หรือการสเตจทีละบรรทัด/ทีละ hunk
  • ในท้ายที่สุด gitui อาจกลายเป็นโซลูชันแบบครบวงจรได้ แต่ยังต้องการความช่วยเหลือ — ตอนนี้ยังเป็นโปรเจกต์ที่ทำในเวลาว่าง
  • ยินดีรับทุกการสนับสนุนและการสปอนเซอร์! ❤️

การติดตั้ง

  • GitUI เป็นเวอร์ชันเบตาและอาจมีบั๊กหรือฟีเจอร์ที่ยังขาดอยู่ อย่างไรก็ตาม สำหรับการใช้งานส่วนตัวถือว่าค่อนข้างเสถียร และยังถูกใช้งานอยู่ระหว่างการพัฒนา
  • สามารถติดตั้งได้ผ่าน package manager หลากหลายแบบ

การบิลด์

  • เวอร์ชันขั้นต่ำที่รองรับของ rust/cargo: 1.65
  • ข้อกำหนดสำหรับการบิลด์ dependency ของ openssl (ดู https://docs.rs/openssl/latest/openssl/)
  • ต้องมี python เพื่อรันชุดทดสอบทั้งหมด (ต้องเรียกได้ด้วย python)
  • วิธีที่ง่ายที่สุดในการบิลด์และติดตั้ง gitui คือใช้ cargo install gitui

คำถามที่พบบ่อย (FAQs)

  • ดูหน้า FAQs

การวินิจฉัยปัญหา

  • หากรัน gitui -l โดยเปิดใช้งาน logging ระบบจะบันทึก log

ธีมสี

  • gitui ทำงานได้อัตโนมัติทั้งบนเทอร์มินัลธีมสว่างและธีมมืด
  • สามารถปรับแต่งทุกอย่างได้ตามความชอบ

คีย์ไบน์ดิง

  • คีย์ไบน์ดิงสามารถปรับแต่งได้

การสนับสนุน

แรงบันดาลใจ

  • ได้แรงบันดาลใจจาก lazygit, tig, GitUp และอื่น ๆ
  • น่าจะดีหากคิดวิธีใช้มุมมองแบบแผนที่ในเครื่องมือเทอร์มินัลได้

ความเห็นของ GN⁺

  • GitUI มอบความสะดวกของ GUI ให้กับผู้ใช้ที่ชอบเทอร์มินัล พร้อมทั้งโดดเด่นด้านความเร็วและการใช้หน่วยความจำต่ำ ซึ่งสำคัญมากโดยเฉพาะเมื่อจัดการรีโพซิทอรีขนาดใหญ่
  • ในฐานะโปรเจกต์โอเพนซอร์ส มันยังคงพัฒนาอย่างต่อเนื่องผ่านการสนับสนุนและการมีส่วนร่วมจากชุมชนนักพัฒนา พร้อมปรับปรุงฟีเจอร์ตามฟีดแบ็กของผู้ใช้
  • GitUI เป็นเครื่องมือที่ช่วยให้นักพัฒนาทำงาน git ได้อย่างมีประสิทธิภาพในสภาพแวดล้อมแบบเทอร์มินัล และน่าจะมีประโยชน์อย่างมากสำหรับผู้ใช้ที่คุ้นเคยกับการใช้งานผ่านคีย์บอร์ด

1 ความคิดเห็น

 
GN⁺ 2024-01-08
ความคิดเห็นบน Hacker News
  • การควบคุมที่รวดเร็วและใช้งานได้อย่างเป็นธรรมชาติด้วยคีย์บอร์ดเท่านั้น

    • ผู้ใช้คงสร้างโปรแกรมนี้ขึ้นมาด้วยเจตนาที่ดี แต่ในการลองใช้ครั้งแรกหลังติดตั้ง ไม่สามารถปรับขนาดหน้าต่าง xterm หรือปรับขนาดหน้าต่างแสดงโครงสร้างไฟล์ได้ และก็หาฟังก์ชันนั้นผ่านคีย์บอร์ดไม่เจอด้วย หากสามารถปรับขนาดด้วยเมาส์ได้ก็น่าจะง่ายและเร็วกว่ามาก
  • โปรเจกต์ที่ได้รับแรงบันดาลใจจาก lazygit

    • ในฐานะผู้ใช้ lazygit ก็สงสัยว่ามีอะไรที่ lazygit ยังขาดอยู่ เพราะตอนนี้ใช้งาน lazygit ได้มีประโยชน์มาก
  • ความล้มเหลวของ git GUI ยอดนิยมบนรีโพซิทอรีขนาดใหญ่

    • เคยเจอปัญหาว่าการตรวจสอบสถานะ git ใช้เวลานานในรีโพซิทอรีขนาดใหญ่หรือโครงสร้างไดเรกทอรีที่ลึก จึงสงสัยว่าจริง ๆ แล้วมีความแตกต่างระหว่าง GUI, TUI และคอมมานด์ไลน์หรือไม่
  • ความคาดหวังต่อโปรเจกต์ใหม่

    • อยากให้ GitExtensions ถูกพอร์ตเป็นแอปพลิเคชันเนทีฟบนลินุกซ์ เคยลอง UI มาหลายแบบแต่ยังหาอะไรที่ดีเท่า GitExtensions ไม่ได้
  • คำถามเกี่ยวกับ UI แบบคลิกแล้วลาก

    • สงสัยว่ามี UI สำหรับ git ที่สามารถทำงานกับบรันช์แบบ drag and drop ได้หรือไม่
  • ประสบการณ์ใช้งานปลั๊กอิน Neogit

    • เริ่มใช้ปลั๊กอิน Neogit มาประมาณหนึ่งเดือนแล้ว และมันคล้ายกันมาก ตอนแรกคีย์ไบน์ดิงใช้งานยาก แต่พอคุ้นเคยแล้วก็เร็วกว่าเวิร์กโฟลว์เดิมมาก
  • ประสบการณ์การใช้เครื่องมือส่วนตัว

    • เคยลองเครื่องมือมาหลายตัว แต่สุดท้ายก็มักมีฟีเจอร์สำคัญบางอย่างขาดไปหรือทำงานไม่ตรงใจ จนต้องกลับไปใช้ tig เสมอ ใน GitUI ยังขาดฟังก์ชันที่แสดงโครงสร้างบรันช์ได้ดี
  • เครื่องมือที่ใช้งานเป็นประจำทุกวัน

    • เป็นเครื่องมือที่เรียบง่ายและยอดเยี่ยมมากสำหรับการใช้งานทุกวัน แต่ควรทราบว่าถ้าต้องการเซ็นกำกับคอมมิต จะต้องใช้ Git เอง
  • ลิงก์ที่เกี่ยวข้อง

    • มีการให้ลิงก์รวมความคิดเห็นบน Hacker News ที่เกี่ยวกับ GitUI: Terminal UI for Git และ Terminal-UI for Git written in Rust
  • คำถามเกี่ยวกับข้อดีเฉพาะของการใช้ GUI

    • ผู้ใช้ที่ไม่เคยใช้ GUI มาก่อนอยากรู้ว่ามีข้อดีเฉพาะอะไรบ้างที่ได้จากการใช้ GUI