เปรียบเทียบ

Git GUI: โปรแกรม Git แบบกราฟิก TortoiseGit, GitKraken, VS Code และอื่น ๆ

อัปเดต: · Skillaria.Top

Git GUI คือโปรแกรมกราฟิกที่แสดงประวัติ บรานช์ และการเปลี่ยนแปลงในหน้าต่างแทนการใช้บรรทัดคำสั่ง ตัวเลือกยอดนิยมได้แก่ การรวม Git ที่มาในตัว VS Code และ IDE ของ JetBrains, GitHub Desktop สำหรับงานง่าย ๆ, TortoiseGit และ Git Extensions สำหรับ Windows, GitKraken และ Sourcetree สำหรับการทำงานกับบรานช์ที่เห็นภาพชัด ทั้งหมดทำงานบน Git ปกติ

Git GUI คืออะไร และจำเป็นหรือไม่

Git GUI คือแอปพลิเคชันกราฟิกสำหรับทำงานกับ Git แทนที่จะพิมพ์คำสั่ง คุณเห็นรายการไฟล์ที่เปลี่ยนแปลง ผังคอมมิต และปุ่ม "Commit" "Push" "Merge" เบื้องหลังไคลเอนต์ git เกือบทุกตัวทำการดำเนินการเดียวกับบรรทัดคำสั่ง และหลายตัวเรียกใช้ git ที่ติดตั้งอยู่ในระบบโดยตรง GUI จึงไม่ใช่ระบบควบคุมเวอร์ชันแยก แต่เป็นอีกวิธีหนึ่งในการจัดการรีโพซิทอรีเดียวกัน

ไคลเอนต์กราฟิกเหมาะเป็นพิเศษกับงานสามอย่าง: ดูประวัติและบรานช์เป็นกราฟ เพิ่มการเปลี่ยนแปลงบางส่วน (การเลือกบรรทัดด้วยเมาส์เข้าคอมมิตง่ายกว่า git add -p มาก) และแก้ความขัดแย้งในเอดิเตอร์แบบสามแผง แต่สำหรับการทำอัตโนมัติ การทำงานบนเซิร์ฟเวอร์ผ่าน SSH และการเข้าใจว่าเกิดอะไรขึ้นจริง ๆ บรรทัดคำสั่งขาดไม่ได้

กลยุทธ์ที่นักพัฒนาที่มีประสบการณ์หลายคนใช้คือ รู้จักบรรทัดคำสั่ง และใช้ GUI เมื่อประหยัดเวลาได้ หากคุณเป็นมือใหม่ ควรเรียนคำสั่งพื้นฐานก่อน เพื่อให้ปุ่มในแอปใดก็ตามเข้าใจได้ ไม่ใช่เหมือนเวทมนตร์

git gui และ gitk ในตัว

ไม่ค่อยมีคนรู้ว่า Git มีโปรแกรมกราฟิกมาให้แล้ว คำสั่ง git gui เปิดหน้าต่างง่าย ๆ บน Tcl/Tk สำหรับเตรียมคอมมิต: ดู diff เพิ่มไฟล์และส่วนย่อย สร้างคอมมิต และ push คำสั่ง gitk แสดงประวัติเป็นกราฟ

git gui
gitk --all

บน Git for Windows โปรแกรมทั้งสองติดตั้งมาพร้อมกับ Git Bash บน Linux บางครั้งต้องติดตั้งแพ็กเกจแยก (เช่น git-gui และ gitk บน Debian และ Ubuntu) อินเทอร์เฟซเก่า แต่ไม่ต้องดาวน์โหลดอะไรเพิ่ม และทำงานได้ทุกที่ที่มี Git

Git ใน VS Code

หากคุณเขียนโค้ดใน Visual Studio Code อาจไม่ต้องใช้โปรแกรมแยก แผง Source Control (Ctrl+Shift+G) ทำ stage ไฟล์และบรรทัดแยกกันได้ คอมมิต push และ pull สลับและสร้างบรานช์ได้ และแสดงการเปลี่ยนแปลงในตัวแก้ไขด้วยสีที่ขอบ ความขัดแย้งจากการ merge เปิดด้วยปุ่ม "Accept Current", "Accept Incoming", "Accept Both" และรุ่นใหม่มี merge editor แบบสามแผง

VS Code ใช้ Git ที่ติดตั้งในระบบ ดังนั้นติดตั้ง Git ก่อน ไม่เช่นนั้นแผงจะแสดงคำเตือน ความสามารถของ vscode git เพิ่มได้ด้วยส่วนขยาย GitLens เพิ่มการระบุผู้เขียนของแต่ละบรรทัด (blame) ประวัติของไฟล์ และการเปรียบเทียบบรานช์ ส่วน Git Graph วาดผังคอมมิต ฟังก์ชันบางอย่างของ GitLens ต้องสมัครสมาชิก จึงควรตรวจว่าอะไรอยู่ในส่วนฟรี

เช่นเดียวกัน IDE ของ JetBrains (IntelliJ IDEA, PyCharm, WebStorm และอื่น ๆ) มีไคลเอนต์ Git ที่พัฒนาดี พร้อมผังบรานช์ rebase แบบโต้ตอบ shelve และการแก้ความขัดแย้งที่ใช้ง่าย สำหรับนักพัฒนาหลายคนนี่คือไคลเอนต์ git หลัก

TortoiseGit

TortoiseGit เป็นไคลเอนต์ฟรีโอเพนซอร์สสำหรับ Windows เท่านั้น ไม่ได้เปิดเป็นแอปแยก แต่ฝังในตัวสำรวจไฟล์ (Explorer): คลิกขวาที่โฟลเดอร์แล้วจะเห็น Commit, Pull, Push, Show log, Diff ในเมนูบริบท ไอคอนของไฟล์แสดงสถานะ เช่น แก้ไขแล้ว เพิ่มแล้ว หรือขัดแย้ง

tortoise git เหมาะกับผู้ที่เคยใช้ SVN และคุ้นกับ TortoiseSVN และกับผู้ที่ไม่ใช่โปรแกรมเมอร์ เช่น ดีไซเนอร์ นักเขียนเทคนิค หรือผู้ทดสอบ ที่ต้องการแค่ดึงและส่งไฟล์ ต้องติดตั้ง Git for Windows ก่อน ข้อเสียคือไม่ข้ามแพลตฟอร์ม และกราฟประวัติเข้าใจยากกว่าไคลเอนต์เฉพาะทาง

Git Extensions

Git Extensions เป็นไคลเอนต์ฟรีโอเพนซอร์สอีกตัวสำหรับ Windows ต่างจาก TortoiseGit มันเป็นหน้าต่างเต็มรูปแบบที่มีกราฟคอมมิต แผง diff และรายการบรานช์ พร้อมการเชื่อมกับ Explorer และ Visual Studio แสดงหลายการดำเนินการใกล้เคียงกับคำสั่ง Git มีคอนโซลในตัวและรองรับซับโมดูล

Git Extensions เป็นตัวเลือกเมื่อต้องการไคลเอนต์ฟรีที่ทรงพลังบน Windows พร้อมกราฟเต็ม และไม่จำเป็นต้องทำงานบน macOS อินเทอร์เฟซค่อนข้างหนาแน่น มือใหม่จะต้องใช้เวลาปรับตัว

GitHub Desktop

GitHub Desktop เป็นแอปฟรีโอเพนซอร์สสำหรับ Windows และ macOS เน้นความเรียบง่าย มีรายการการเปลี่ยนแปลง ช่องข้อความคอมมิต ปุ่มซิงก์ และตัวสลับบรานช์ เชื่อมกับ GitHub อย่างลึก คลิกเดียวเพื่อโคลนรีโพซิทอรีของตัวเอง สร้าง pull request และล็อกอินด้วยบัญชี แต่ก็ทำงานกับรีโมตรีโพซิทอรีอื่นได้

git desktop จาก GitHub เป็นไคลเอนต์แรกที่ดีสำหรับมือใหม่ และเป็นตัวเลือกที่ดีสำหรับโปรเจกต์ง่าย ๆ การดำเนินการที่ซับซ้อน (rebase แบบโต้ตอบ การทำงานกับ reflog การปรับแต่ง merge อย่างละเอียด) ถูกจำกัดหรือไม่มี ต้องเปิดเทอร์มินัลสำหรับสิ่งเหล่านั้น

GitKraken

GitKraken เป็นไคลเอนต์เชิงพาณิชย์ข้ามแพลตฟอร์ม (Windows, macOS, Linux) ที่มีกราฟคอมมิตชัดเจนที่สุดตัวหนึ่ง ลากบรานช์เพื่อทำ merge หรือ rebase ได้ มีตัวแก้ความขัดแย้งในตัว รองรับ Git Flow เชื่อมกับบริการโฮสต์ Git และระบบติดตามงานยอดนิยม และยกเลิกการดำเนินการล่าสุดด้วยปุ่ม Undo ได้

มีเวอร์ชันฟรีที่มีข้อจำกัดและแพ็กเกจแบบสมัครสมาชิก ชุดฟีเจอร์ของแต่ละแพ็กเกจเปลี่ยนแปลงได้ ดังนั้นตรวจเงื่อนไขเช่นการทำงานกับรีโพซิทอรีส่วนตัวบนเว็บไซต์ทางการก่อนเลือก ผู้ใช้ชอบ git kraken ที่แสดงประวัติซับซ้อนได้ชัดเจน ข้อเสียคือใช้ทรัพยากรมากและโมเดลเสียเงินสำหรับงานเชิงพาณิชย์

Sourcetree, Fork, Sublime Merge และไคลเอนต์ในเทอร์มินัล

Sourcetree จาก Atlassian เป็นไคลเอนต์ฟรีสำหรับ Windows และ macOS มีกราฟประวัติ รองรับ Git Flow, rebase แบบโต้ตอบ และ stash เข้ากับ Bitbucket ได้ดี การติดตั้งอาจต้องมีบัญชี Atlassian

Fork เป็นไคลเอนต์เชิงพาณิชย์ที่รวดเร็วและเรียบร้อยสำหรับ Windows และ macOS มี rebase แบบโต้ตอบและการแก้ความขัดแย้งที่ใช้งานสะดวก เงื่อนไขการใช้งานดูได้บนเว็บไซต์ของผู้พัฒนา

Sublime Merge จากผู้สร้าง Sublime Text เป็นไคลเอนต์ที่เร็วมากสำหรับ Windows, macOS และ Linux ตรรกะใกล้เคียงกับบรรทัดคำสั่ง ทำให้เห็นได้ง่ายว่าปุ่มใดรันคำสั่ง Git อะไร ใช้สัญญาอนุญาตเชิงพาณิชย์ และอนุญาตให้ทดลองใช้ได้

lazygit และ tig เป็นไคลเอนต์ในเทอร์มินัลที่มีอินเทอร์เฟซข้อความ lazygit ให้ stage บรรทัด rebase และแก้ความขัดแย้งด้วยปุ่มลัด tig เหมาะกับการดูประวัติ เป็นตัวเลือกของผู้ที่อยู่ในเทอร์มินัลและทำงานบนเซิร์ฟเวอร์ผ่าน SSH

ตารางเปรียบเทียบไคลเอนต์ Git

ไคลเอนต์แพลตฟอร์มรูปแบบการแจกจ่ายจุดแข็งเหมาะกับใคร
git gui + gitkWindows, macOS, Linuxฟรี มาพร้อม Gitไม่ต้องติดตั้งอะไรเพิ่มดูคอมมิตและประวัติอย่างรวดเร็ว
VS CodeWindows, macOS, LinuxฟรีGit อยู่ในตัวแก้ไขนักพัฒนาที่ทำงานใน VS Code
IDE ของ JetBrainsWindows, macOS, Linuxขึ้นกับ IDEเครื่องมือ rebase และความขัดแย้งที่ทรงพลังผู้ใช้ IDE ของ JetBrains
TortoiseGitWindowsฟรี โอเพนซอร์สรวมกับ Explorerอดีตผู้ใช้ SVN และผู้ที่ไม่ใช่โปรแกรมเมอร์
Git ExtensionsWindowsฟรี โอเพนซอร์สกราฟเต็มและฟีเจอร์มากผู้ใช้ Windows ที่มีประสบการณ์
GitHub DesktopWindows, macOSฟรี โอเพนซอร์สเรียบง่าย เชื่อมกับ GitHubมือใหม่ โปรเจกต์ง่าย ๆ
GitKrakenWindows, macOS, Linuxเชิงพาณิชย์ มีเวอร์ชันฟรีกราฟชัดเจน ลากวางทีมที่มีประวัติซับซ้อน
SourcetreeWindows, macOSฟรีGit Flow เชื่อมกับ Bitbucketผู้ใช้ระบบนิเวศ Atlassian
Sublime MergeWindows, macOS, Linuxเชิงพาณิชย์ความเร็ว ความโปร่งใสของคำสั่งผู้ที่ให้ความสำคัญกับความเร็ว
lazygitWindows, macOS, Linuxฟรี โอเพนซอร์สทำงานในเทอร์มินัลผู้ชอบเทอร์มินัลและ SSH

วิธีเลือกโปรแกรมสำหรับ Git

  • คุณทำงานใน VS Code หรือ IDE ของ JetBrains อยู่แล้ว เริ่มจาก Git ที่มาในตัว แยกโปรแกรมก็ต่อเมื่อขาดอะไรบางอย่าง
  • ต้องการความเรียบง่ายสูงสุด ใช้ GitHub Desktop
  • Windows และคุ้นกับ Explorer ใช้ TortoiseGit หากต้องการกราฟเต็ม ใช้ Git Extensions
  • ประวัติซับซ้อน มีหลายบรานช์ ทำงานเป็นทีมบนระบบปฏิบัติการต่างกัน ใช้ GitKraken, Sublime Merge หรือ Fork และตรวจเงื่อนไขการใช้งานเชิงพาณิชย์
  • คุณอยู่ในเทอร์มินัลตลอด ใช้ lazygit หรือ tig

โปรแกรมหลายตัวติดตั้งพร้อมกันได้ เพราะทำงานกับรีโพซิทอรีเดียวกันและไม่รบกวนกัน ข้อมูลทั้งหมดเก็บในโฟลเดอร์ .git ลองสองถึงสามตัวกับโปรเจกต์จริง แล้วเลือกตัวที่หาสิ่งที่ต้องการได้เร็วที่สุด

ข้อควรระวังของไคลเอนต์กราฟิก

  • Git คนละเวอร์ชัน. บางแอปมาพร้อม Git ในตัว และเวอร์ชันอาจต่างจากที่ระบบมี หากพฤติกรรมใน GUI และเทอร์มินัลไม่ตรงกัน ตรวจในการตั้งค่าของไคลเอนต์ว่าใช้ Git ตัวไหน
  • การดำเนินการที่ซ่อนอยู่. ปุ่ม "Sync" อาจหมายถึง pull ด้วย merge หรือ rebase แล้ว push เรียนรู้ว่ามันทำอะไรก่อนกดในบรานช์สำคัญ
  • Force push ด้วยคลิกเดียว. ใน GUI ง่ายที่จะเขียนประวัติของบรานช์รีโมตทับ ควรเลือกแบบที่มีการตรวจสอบ (เทียบเท่า git push --force-with-lease) และป้องกันบรานช์หลักบนเซิร์ฟเวอร์
  • ชื่อและอีเมล. ไคลเอนต์ดึงจากการตั้งค่าของ Git ตรวจด้วย git config --global user.name และ user.email ไม่เช่นนั้นคอมมิตจาก GUI จะลงชื่อผู้เขียนผิดคน
  • การยืนยันตัวตน. GUI มักเก็บโทเคนแยกจาก Git ของระบบ หาก push ทำงานในเทอร์มินัลแต่ไม่ทำงานในแอป (หรือกลับกัน) ปัญหามักอยู่ที่ข้อมูลรับรอง

เชื่อม GUI กับบรรทัดคำสั่ง

ทักษะที่มีประโยชน์ที่สุดคือการตรวจในเทอร์มินัลว่าไคลเอนต์ทำอะไรไป หลังการดำเนินการที่ไม่เข้าใจในแอป รัน git status และ git log --oneline --graph --all -n 20 คุณจะเห็นสถานะจริงของบรานช์โดยไม่ผ่านการตีความของอินเทอร์เฟซ หากมีอะไรผิดพลาด git reflog จะแสดงตำแหน่งของ HEAD ก่อนกดปุ่ม และช่วยให้กลับไปได้ด้วย git reset หรือ git switch

ไคลเอนต์หลายตัวแสดงบันทึกคำสั่ง Git ที่รันไป ให้เปิดไว้ นี่คือวิธีที่ดีที่สุดในการเรียนรู้คำสั่งโดยไม่ต้องละทิ้งอินเทอร์เฟซที่สะดวก

สรุป

Git GUI ช่วยให้ดูประวัติ คอมมิตบางส่วน และแก้ความขัดแย้งได้ง่ายขึ้น แต่ไม่สามารถแทนความเข้าใจคำสั่งได้ สำหรับนักพัฒนาส่วนใหญ่ Git ที่มาในตัวของ VS Code หรือ IDE เพียงพอแล้ว มือใหม่เหมาะกับ GitHub Desktop ผู้ใช้ Windows เหมาะกับ TortoiseGit หรือ Git Extensions และการทำงานกับประวัติซับซ้อนอย่างเห็นภาพเหมาะกับ GitKraken, Sourcetree หรือ Sublime Merge การติดตั้ง Git การตั้งค่า และการทำงานในเทอร์มินัลอย่างคล่องแคล่วถูกอธิบายและฝึกจริงในหลักสูตร Git

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

สามารถทำงานกับ Git ผ่านไคลเอนต์กราฟิกเท่านั้นได้หรือไม่?

สำหรับงานประจำวันได้ แต่สักวันจะเจอสถานการณ์ที่แก้ด้วยคำสั่งง่ายกว่า เช่น การกู้คืนผ่าน reflog คำสั่งพื้นฐานควรรู้ไว้ในทุกกรณี

ต้องติดตั้ง Git แยกต่างหากหรือไม่ หากมีไคลเอนต์ GUI แล้ว?

สำหรับ VS Code, TortoiseGit และ Git Extensions ต้องมี Git ที่ติดตั้งแล้ว แอปบางตัวอย่าง GitHub Desktop มี Git ในตัว แต่ Git ของระบบก็ยังมีประโยชน์สำหรับเทอร์มินัล

มีไคลเอนต์ Git สำหรับ Linux ตัวไหนบ้าง?

บน Linux ใช้ได้ทั้ง git gui และ gitk ที่มาในตัว, VS Code, IDE ของ JetBrains, GitKraken, Sublime Merge และไคลเอนต์เทอร์มินัลอย่าง lazygit และ tig

ปลอดภัยหรือไม่ที่จะเปิดรีโพซิทอรีเดียวกันในหลายไคลเอนต์?

ปลอดภัย ทุกไคลเอนต์ทำงานกับโฟลเดอร์ .git เดียวกัน เพียงอย่ารันการดำเนินการพร้อมกัน ไม่เช่นนั้นไคลเอนต์หนึ่งจะได้รับข้อผิดพลาดเรื่อง index.lock ถูกล็อก

เรียนหัวข้อนี้ผ่านวิดีโอ

หัวข้อนี้สอนอย่างละเอียดพร้อมฝึกปฏิบัติในคอร์ส “Git с нуля до уверенного разработчика”

ไปที่คอร์ส