# GitHub Desktop คืออะไร: วิธีดาวน์โหลด ติดตั้ง และใช้ Git โดยไม่ต้องพิมพ์คำสั่ง

URL: https://skillaria.top/th/guides/git/github-desktop-guide

GitHub Desktop เป็นแอปฟรีจาก GitHub สำหรับ Windows และ macOS ที่ทำงานหลักของ Git ด้วยปุ่มกด ได้แก่ clone, commit, push, pull, สาขา, merge และการแก้คอนฟลิกต์ ดาวน์โหลดได้จาก desktop.github.com หลังติดตั้งให้ล็อกอินบัญชี GitHub แล้วโคลนรีโพได้เลย

## GitHub Desktop คืออะไร

GitHub Desktop เป็นแอปฟรีแบบโอเพนซอร์สที่ GitHub เผยแพร่สำหรับ Windows และ macOS โปรแกรมแสดงไฟล์ที่ถูกแก้ไข ประวัติ commit และสาขาไว้ในหน้าต่างเดียว และรันคำสั่งหลักของ Git ด้วยการคลิกปุ่ม ตัวแอปมี Git อยู่ภายในแล้ว จึงไม่จำเป็นต้องติดตั้ง Git แยกต่างหากเพื่อใช้งาน

ถ้าตอบสั้น ๆ ว่า «git desktop คืออะไร»: มันคือโปรแกรม Git แบบกราฟิกที่ออกแบบมาสำหรับ GitHub โดยเฉพาะ สามารถโคลนรีโพของคุณได้ในคลิกเดียว สร้าง pull request และแสดงสถานะการตรวจสอบได้ แต่ก็ใช้งานกับรีโมตรีโพอื่นที่เชื่อมผ่าน HTTPS ได้ เช่น GitLab หรือเซิร์ฟเวอร์ของตัวเอง

GitHub Desktop เหมาะกับผู้เริ่มต้น นักออกแบบ ผู้เขียนเอกสารทางเทคนิค และทุกคนที่ต้องการวงจรที่เข้าใจง่ายอย่าง «แก้ไข → commit → ส่งขึ้น» นักพัฒนาที่มีประสบการณ์ก็ใช้มันดู diff อย่างชัดเจน และเลือก commit เฉพาะบรรทัดได้ ส่วนงานที่ซับซ้อนมักทำในเทอร์มินัล

## วิธีดาวน์โหลด GitHub Desktop

ที่อยู่สำหรับดาวน์โหลดอย่างเป็นทางการคือ desktop.github.com เว็บไซต์จะตรวจจับระบบของคุณเอง และเสนอตัวติดตั้งสำหรับ Windows หรือไฟล์บีบอัดสำหรับ macOS ควรดาวน์โหลดจากที่นี่หรือจากหน้า Releases ของรีโพ desktop/desktop บน GitHub เท่านั้น เพราะเว็บไซต์บุคคลที่สามที่บอกว่า «ดาวน์โหลดฟรี» อาจมีโปรแกรมอื่นแฝงมาด้วย

ไม่มีเวอร์ชันทางการสำหรับ Linux มีโปรเจกต์ฟอร์กที่ชุมชนดูแล (รีโพ shiftkey/desktop) ที่มีแพ็กเกจ .deb, .rpm และ AppImage แต่ไม่ใช่บิลด์ทางการ บน Linux การใช้เทอร์มินัลหรือ Git ที่มาพร้อมกับ editor จะสะดวกกว่า

### การติดตั้งบน Windows

1. เปิดไฟล์ GitHubDesktopSetup ที่ดาวน์โหลดมา
2. ตัวติดตั้งจะไม่ถามอะไรเพิ่มเติม โปรแกรมจะติดตั้งในโปรไฟล์ของผู้ใช้ปัจจุบันและเปิดขึ้นทันที
3. ไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ แอปจะดาวน์โหลดการอัปเดตเองโดยอัตโนมัติ

หากต้องการติดตั้งบนเครื่องขององค์กร มีตัวติดตั้งแบบ MSI แยกต่างหาก ให้ค้นหาได้ในเอกสารของ GitHub Desktop

### การติดตั้งบน macOS

1. แตกไฟล์ zip ที่ดาวน์โหลดมา
2. ลาก GitHub Desktop ไปยังโฟลเดอร์ «Applications» (แอปพลิเคชัน)
3. เปิดแอปและยืนยันว่าต้องการเปิดโปรแกรมที่ดาวน์โหลดจากอินเทอร์เน็ต

มีบิลด์สำหรับโปรเซสเซอร์ Intel และ Apple Silicon เว็บไซต์มักแนะนำเวอร์ชันที่เหมาะสมให้โดยอัตโนมัติ นอกจากนี้ยังติดตั้งผ่าน Homebrew ได้ด้วย:

```
brew install --cask github
```

## การล็อกอินบัญชีและตั้งค่าเริ่มต้น

เมื่อเปิดครั้งแรก GitHub Desktop จะขอให้คุณล็อกอินเข้า GitHub.com กดปุ่มล็อกอิน เบราว์เซอร์จะเปิดขึ้นให้คุณยืนยันการอนุญาตให้แอปเข้าถึงบัญชี คุณไม่ต้องกรอกรหัสผ่านในตัวแอปเอง และการยืนยันตัวตนสองขั้นตอนก็ทำในเบราว์เซอร์ตามปกติ สำหรับเซิร์ฟเวอร์ GitHub Enterprise มีตัวเลือกการล็อกอินแยกต่างหาก

จากนั้นแอปจะขอให้คุณตั้งค่า Git ได้แก่ ชื่อและอีเมลที่จะปรากฏในทุก commit ซึ่งก็คือ `user.name` และ `user.email` ที่ตั้งด้วยคำสั่ง `git config --global` ดังนั้นถ้าคุณเคยตั้งค่า Git ไว้แล้ว ข้อมูลเหล่านี้จะถูกกรอกให้อัตโนมัติ หากต้องการให้ commit เชื่อมกับโปรไฟล์ GitHub ของคุณ ให้ใช้อีเมลที่เพิ่มไว้ในบัญชี หรืออีเมลส่วนตัวรูปแบบ `ID+ชื่อผู้ใช้@users.noreply.github.com`

ภายหลังสามารถเปลี่ยนค่าเหล่านี้ได้ในหน้าตั้งค่า บน Windows ไปที่เมนู File → Options บน macOS ไปที่เมนู GitHub Desktop → Settings ที่เดียวกันนี้ยังเลือก editor ภายนอก (เช่น VS Code) และเทอร์มินัลที่จะเปิดจากแอปได้ รวมถึงธีมของหน้าจอด้วย

## การโคลนรีโพ

การ clone คือการดาวน์โหลดสำเนาของรีโพระยะไกลพร้อมประวัติทั้งหมด ใน GitHub Desktop ใช้เมนู File → Clone repository หน้าต่างมีสามแท็บ ได้แก่ รีโพของคุณบน GitHub.com รีโพบน GitHub Enterprise และแท็บ URL ที่คุณวางที่อยู่ใดก็ได้ รวมถึงที่อยู่บน GitLab

1. เลือกรีโพจากรายการ หรือวาง URL
2. เลือกโฟลเดอร์ในเครื่อง (Local path)
3. กด Clone และรอจนดาวน์โหลดเสร็จ

ผลลัพธ์เหมือนคำสั่ง `git clone` ในหน้ารีโพบน GitHub เมนูปุ่ม Code มีตัวเลือก Open with GitHub Desktop ซึ่งจะเปิดแอปพร้อมที่อยู่ที่กรอกไว้แล้ว หากคุณโคลนรีโพของผู้อื่นที่ไม่มีสิทธิ์เขียน แอปจะเสนอให้สร้าง fork เมื่อคุณพยายามส่งการแก้ไขครั้งแรก

โฟลเดอร์โปรเจกต์ Git ที่มีอยู่แล้วเพิ่มได้ด้วย File → Add local repository และสร้างรีโพใหม่ด้วย File → New repository คุณสามารถเลือกเทมเพลต `.gitignore` และไลเซนส์ และสร้าง README ได้ทันที

## วิธี commit ใน GitHub Desktop

ด้านซ้ายของแท็บ Changes แสดงไฟล์ทั้งหมดที่ถูกแก้ไข ด้านขวาแสดง diff ของไฟล์ที่เลือก บรรทัดที่ถูกลบจะเป็นสีแดง และบรรทัดที่เพิ่มจะเป็นสีเขียว ช่องทำเครื่องหมายข้างไฟล์จะกำหนดว่าไฟล์นั้นจะรวมอยู่ใน commit นี้หรือไม่ ซึ่งทำหน้าที่เหมือน staging area และคำสั่ง `git add`

1. ยกเลิกการเลือกไฟล์ที่ไม่ต้องการ commit
2. หากจำเป็น ให้คลิกบรรทัดเฉพาะใน diff เพื่อยกเว้นออก วิธีนี้คือการ commit บางส่วน คล้ายกับ `git add -p`
3. พิมพ์คำอธิบายสั้น ๆ ในช่อง Summary ด้านล่าง และพิมพ์รายละเอียดเพิ่มเติมในช่อง Description หากต้องการ
4. กดปุ่ม Commit to <ชื่อสาขา>

commit จะถูกสร้างเฉพาะในเครื่องของคุณ ยังไม่ถูกส่งขึ้นเซิร์ฟเวอร์ การ commit ด้วย GitHub Desktop เหมาะกับการทำ commit ที่เล็กและมีความหมายชัดเจน เพราะคุณเห็นได้ว่าแต่ละ commit มีอะไรอยู่บ้าง หาก commit มีข้อผิดพลาด ปุ่ม Undo จะปรากฏที่ด้านล่างทันทีหลัง commit ปุ่มนี้จะยกเลิก commit ล่าสุดและย้ายการเปลี่ยนแปลงกลับไปยังโฟลเดอร์งาน ตราบใดที่ยังไม่ได้ push

ไฟล์ที่ไม่ควรอยู่ในรีโพสามารถยกเว้นได้จากเมนูคลิกขวาของไฟล์ ตัวเลือก Ignore จะเพิ่มไฟล์นั้นลงใน `.gitignore` หากต้องการยกเลิกการแก้ไขที่ยังไม่ได้ commit ให้ใช้ Discard changes ในเมนูเดียวกัน การแก้ไขจะถูกลบ (ไปที่ถังขยะของระบบบน Windows และ macOS) แต่ควรถือว่าเป็นการกระทำที่ย้อนกลับไม่ได้

## Push, pull และ fetch: ซิงก์กับเซิร์ฟเวอร์

ปุ่มหลักในแถบด้านบนจะเปลี่ยนชื่อตามสถานการณ์ จุดนี้เองที่ GitHub Desktop push และ pull ทำงานได้ด้วยการคลิกเพียงครั้งเดียว

| ข้อความบนปุ่ม | สิ่งที่เกิดขึ้น | คำสั่ง Git ที่เทียบเท่า |
| --- | --- | --- |

| Publish repository | รีโพในเครื่องยังไม่อยู่บน GitHub: สร้างรีโพระยะไกลแล้วส่งขึ้นไป | สร้าง remote + `git push -u` |

| Publish branch | สาขามีอยู่เฉพาะในเครื่อง | `git push -u origin ชื่อสาขา` |

| Fetch origin | ตรวจสอบว่ามี commit ใหม่บนเซิร์ฟเวอร์หรือไม่ | `git fetch` |

| Pull origin | มี commit ใหม่บนเซิร์ฟเวอร์ ดึงลงมา | `git pull` |

| Push origin | มี commit ในเครื่องที่ยังไม่ได้ส่ง ส่งขึ้นไป | `git push` |

ข้างปุ่มจะแสดงจำนวน commit พร้อมลูกศรขึ้นและลง แสดงว่าต้อง push กี่ commit และต้อง pull กี่ commit แอปจะ fetch เป็นระยะในเบื้องหลัง ดังนั้นปุ่ม Pull จะปรากฏเองเมื่อเพื่อนร่วมทีมส่งงานขึ้นมาใหม่

หากสาขาของคุณแยกออกจากเซิร์ฟเวอร์ และทั้งสองฝั่งมี commit ใหม่ การ push จะถูกปฏิเสธ ให้ทำ Pull origin ก่อน Git จะรวมการเปลี่ยนแปลง และหากมีการทับซ้อนกันก็จะเกิดคอนฟลิกต์ การ push แบบเขียนประวัติทับ (force push) แอปจะเสนอให้ใช้เฉพาะหลังการดำเนินการที่แก้ไข commit ที่ส่งขึ้นไปแล้ว เช่น rebase

## สาขา: การสร้าง สลับ และ checkout

จัดการสาขาได้จากเมนูแบบดรอปดาวน์ Current branch ในแถบด้านบน เมนูนี้แสดงรายการสาขาในเครื่องและสาขาระยะไกล มีช่องค้นหา และปุ่ม New branch การเลือกสาขาจากรายการคือ git desktop checkout ซึ่งจะสลับโฟลเดอร์งานไปยังสาขานั้น หากเลือกสาขาระยะไกลที่ยังไม่มีในเครื่อง แอปจะสร้างสาขาในเครื่องที่ติดตามสาขาระยะไกลนั้นให้

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

เมื่องานในสาขาเสร็จแล้ว เมนู Branch มีตัวเลือก Create pull request ซึ่งจะเปิดหน้าการสร้าง pull request บน GitHub ในเบราว์เซอร์ ขั้นตอนการรีวิวและการ merge จะทำบนเว็บไซต์

## merge และ rebase ใน GitHub Desktop

หากต้องการรวมสาขาอื่นเข้ากับสาขาปัจจุบัน ให้เลือก Choose a branch to merge into <สาขา> จากเมนู Current branch (มีในเมนู Branch ด้วย) แอปจะแสดงล่วงหน้าว่าจะรวม commit กี่รายการและมีคอนฟลิกต์หรือไม่ นี่คือ git desktop merge ซึ่งก็คือ `git merge` ธรรมดา

ในเมนูเดียวกันยังมี Squash and merge ที่บีบ commit ทั้งหมดของสาขาให้เหลือหนึ่ง และ Rebase current branch ซึ่งคือ git desktop rebase ที่ย้าย commit ของคุณไปวางบนสาขาที่เลือก หลังจาก rebase สาขาที่ส่งขึ้นไปแล้วจะมีประวัติบนเซิร์ฟเวอร์กับในเครื่องต่างกัน ปุ่ม Push จะเปลี่ยนเป็น Force push origin ให้ทำเฉพาะกับสาขาของคุณเองที่ไม่มีใครทำงานอยู่ด้วย

ในแท็บ History คุณสามารถลาก commit ได้ เช่น ลงไปยังสาขาอื่น (คือ cherry-pick) ลงไปทับ commit อื่น (squash) หรือเปลี่ยนลำดับ แต่แอปไม่มี interactive rebase แบบเต็มรูปแบบ หากต้องการใช้ทุกการทำงาน ต้องรัน `git rebase -i` ในเทอร์มินัล

## คอนฟลิกต์ในการ merge

หากมีบรรทัดเดียวกันถูกแก้ไขในสองสาขา เมื่อ merge, pull หรือ rebase หน้าต่างที่แสดงรายการไฟล์คอนฟลิกต์จะปรากฏขึ้น สำหรับแต่ละไฟล์ คุณสามารถเปิดในเอดิเตอร์ภายนอก หรือเลือกเอาเวอร์ชันใดเวอร์ชันหนึ่งทั้งไฟล์ คือเวอร์ชันของคุณหรือเวอร์ชันที่เข้ามา

ในเอดิเตอร์ คอนฟลิกต์จะมีหน้าตาดังนี้:

```
> feature/pagination
```

เก็บส่วนที่ต้องการไว้ ลบเครื่องหมายออก และบันทึกไฟล์ เมื่อเครื่องหมายหายไปจากทุกไฟล์ GitHub Desktop จะทำเครื่องหมายว่าแก้ไขแล้ว และเปิดปุ่มให้ทำการ merge ต่อ ซึ่งจะสร้าง merge commit หากมีอะไรผิดพลาด คุณสามารถกดยกเลิกในหน้าต่างเดิมเพื่อยุติการ merge ได้ ซึ่งเทียบเท่ากับ `git merge --abort`

## git stash ใน GitHub Desktop

หน้าต่างหลักไม่มีปุ่ม «stash» แยกต่างหาก แต่ฟังก์ชันนี้มีอยู่ เมื่อคุณสลับไปยังสาขาอื่นทั้งที่ยังมีการแก้ไขที่ไม่ได้ commit แอปจะถามว่าต้องการจัดการการแก้ไขเหล่านั้นอย่างไร จะเก็บไว้ที่สาขาปัจจุบัน หรือย้ายไปยังสาขาใหม่ ตัวเลือก «เก็บไว้» จะซ่อนการแก้ไขไว้ใน stash ซึ่งเป็นวิธีการทำงานของ git stash ใน GitHub Desktop

คุณยังซ่อนการแก้ไขด้วยตัวเองได้จากเมนูคลิกขวาของรายการการเปลี่ยนแปลง (Stash all changes) เมื่อกลับมาที่สาขานั้น คุณจะเห็นบรรทัด Stashed changes ที่ด้านล่างของแท็บ Changes คุณดูไฟล์ที่ถูกซ่อนไว้ได้ที่นั่น และสามารถกู้คืน (Restore) หรือลบออกได้

ข้อจำกัด: GitHub Desktop เก็บ stash ได้เพียงรายการเดียวต่อสาขา หากต้องการหลายรายการ หรือต้องการ `git stash pop` แบบเลือกรายการ หรือ `git stash apply stash@{1}` ให้ใช้เทอร์มินัล แอปสามารถเปิดเทอร์มินัลในโฟลเดอร์ที่ถูกต้องได้ผ่านเมนู Repository

## Git LFS ใน GitHub Desktop

Git LFS เก็บไฟล์ไบนารีขนาดใหญ่ (วิดีโอ, PSD, โมเดล) ไว้บนเซิร์ฟเวอร์แยกต่างหาก ส่วนในรีโพจะเหลือเพียงไฟล์พอยน์เตอร์ GitHub Desktop รองรับ LFS: เมื่อโคลนหรือเปิดรีโพที่ใช้ LFS แอปจะเสนอให้เริ่มต้น Git LFS หลังจากนั้นไฟล์ขนาดใหญ่จะถูกดาวน์โหลดและส่งขึ้นโดยอัตโนมัติ

แต่ในอินเทอร์เฟซไม่สามารถระบุได้ว่าไฟล์ใดให้ LFS ติดตาม ต้องตั้งค่านี้ครั้งเดียวในเทอร์มินัล หลังจากนั้น git lfs ใน GitHub Desktop จะทำงานโดยไม่ต้องสังเกต:

```
git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Track PSD files with Git LFS"
```

ควรคำนึงถึงโควตาด้วย บัญชี GitHub ฟรีมีขีดจำกัดพื้นที่จัดเก็บและปริมาณการใช้งาน LFS ดูตัวเลขล่าสุดได้ในการตั้งค่าการเรียกเก็บเงินของบัญชี

## Reset, revert และประวัติ

แท็บ History แสดง commit ของสาขาปัจจุบันและการเปลี่ยนแปลงในแต่ละ commit จากเมนูคลิกขวาของ commit คุณสามารถใช้:

- **Revert changes in commit**: สร้าง commit ใหม่ที่ยกเลิก commit ที่เลือก ปลอดภัยแม้ commit นั้นจะถูกส่งขึ้นไปแล้ว
- **Create branch from commit** และ **Create tag**: สร้างสาขาหรือแท็กจากจุดใดก็ได้ในประวัติ
- **Amend commit**: สำหรับ commit ล่าสุด เพื่อแก้ไขข้อความ หรือเพิ่มไฟล์
- **Reset to commit**: มีในแอปเวอร์ชันใหม่ ย้ายสาขากลับไปยัง commit ที่เลือก และเก็บการเปลี่ยนแปลงในโฟลเดอร์งานไว้ เทียบเท่ากับ `git reset --mixed`

ไม่มี git desktop reset แบบที่ลบการเปลี่ยนแปลงทิ้งทั้งหมด (`git reset --hard`) ในอินเทอร์เฟซ นี่เป็นการออกแบบโดยเจตนา เพื่อไม่ให้ผู้เริ่มต้นทำงานหาย หากต้องการจริง ๆ ให้ใช้เทอร์มินัล และ commit ที่หายไปสามารถค้นหาได้ผ่าน `git reflog`

## เมื่อไรควรใช้บรรทัดคำสั่ง

GitHub Desktop ครอบคลุมการทำงานประจำวันส่วนใหญ่ แต่หลายอย่างไม่มีหรือใช้ไม่สะดวก:

- interactive rebase ที่มีการดำเนินการครบทุกแบบ, `git bisect`, `git reflog`, `git worktree`;
- stash หลายรายการ, submodule และการตั้งค่า remote อย่างละเอียด;
- การทำงานบนเซิร์ฟเวอร์ผ่าน SSH และการทำงานอัตโนมัติในสคริปต์และ CI;
- Linux ซึ่งไม่มีเวอร์ชันทางการ

นอกจากนี้ การสัมภาษณ์งานมักถามเกี่ยวกับคำสั่งโดยตรง และการเข้าใจว่า `fetch`, `merge` และ `rebase` ทำอะไรก็ช่วยให้ใช้ GUI ได้ดีขึ้น แนวทางที่ใช้ได้จริงคือ เชี่ยวชาญบรรทัดคำสั่ง และใช้แอปในจุดที่ช่วยประหยัดเวลา เช่น การดู diff, การ commit บางส่วน และการแก้คอนฟลิกต์ จาก GitHub Desktop คุณยังเปิดเทอร์มินัลในโฟลเดอร์โปรเจกต์ได้จากเมนู Repository

## สรุป

GitHub Desktop เป็นวิธีที่ง่ายและฟรีในการใช้ Git บน Windows และ macOS: ดาวน์โหลดจาก desktop.github.com ล็อกอินบัญชี โคลนรีโพ แล้วทำ commit, push, pull, สาขา และการแก้คอนฟลิกต์ด้วยปุ่มกด สำหรับ stash, LFS และ reset ความสามารถมีจำกัด งานที่ซับซ้อนยังต้องใช้เทอร์มินัล รีโพระยะไกล, push, pull และการทำงานเป็นทีมผ่าน pull request มีการอธิบายโดยละเอียดพร้อมตัวอย่างจริงในคอร์ส Git

## FAQ

**GitHub Desktop ฟรีหรือไม่?**

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

**ต้องติดตั้ง Git แยกต่างหากเพื่อใช้ GitHub Desktop หรือไม่?**

ไม่ต้อง แอปมี Git ของตัวเองอยู่ภายใน แต่ถ้าต้องการทำงานในเทอร์มินัลด้วย ให้ติดตั้ง Git สำหรับระบบของคุณแยกต่างหาก

**ใช้ GitHub Desktop กับ GitLab หรือ Bitbucket ได้หรือไม่?**

ได้ โคลนรีโพด้วยที่อยู่ HTTPS ในแท็บ URL ได้เลย การเชื่อมกับ pull request และการล็อกอินบัญชีใช้ได้เฉพาะกับ GitHub

**GitHub Desktop มีภาษาไทยหรือไม่?**

ไม่มีอินเทอร์เฟซภาษาไทยอย่างเป็นทางการ แอปใช้ภาษาอังกฤษ แต่ชื่อปุ่มสั้นและตรงกับคำสั่ง Git จึงเรียนรู้ได้ไม่ยาก

**ทำไม GitHub Desktop ไม่เห็นการเปลี่ยนแปลงของไฟล์?**

สาเหตุที่พบบ่อยที่สุดคือไฟล์ตรงกับกฎใน .gitignore หรือเปิดโฟลเดอร์รีโพอีกโฟลเดอร์อยู่ ให้ตรวจสอบเส้นทางในเมนู Current repository และดูเนื้อหาของ .gitignore


---
Source: Skillaria.Top (https://skillaria.top)
