# Git Basic

## Git คืออะไร ?

&#x20;         Git เป็น Version Control System (VCS) ชนิด Distributed หรือแบบกระจายศูนย์ ซึ่งเป็นการรวมข้อดีของชนิด Local และชนิด Central Version Control System มาใช้ ทั้งยังเป็นที่นิยมใช้ในการพัฒนา software ร่วมกับผู้อื่น เพราะว่าเป็นระบบที่ใช้จัดเก็บและควบคุมการเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์ชนิดใดก็ได้ ไม่ว่าจะเป็น text file หรือ Binary file (source code)

### &#x20;  Git มีประโยชน์อย่างไร ?

1. ทำงานพร้อมกันในโปรเจคเดียวกันได้หลาย ๆ คน
2. จะมีการบันทึก History ของทุกคนที่กำลังทำ ดังนั้นเราจะสามารถรู้ได้ว่าใครกำลังทำอะไรอยู่
3. สามารถ backup ข้อมูลได้เวลาเกิดปัญหา
4. สามารถ Diff ดูได้เป็นบรรทัด ๆ ไปเลยว่าปัญหาเกิดตรงจุดไหน

## **สถานะต่าง ๆ ของ Git**

* **Untracked -** เป็นสถานะที่ source code ถูกเพิ่มเข้ามาใหม่และยังไม่ได้ถูกเก็บไว้ในระบบของ Git
* **Work Directory -** เป็นสถานะที่กำลังมีการเปลี่ยนแปลงหรือแก้ไข source code หรืออาจจะเรียกสถานะนี้ว่า Modified
* **Staged -** เป็นสถานะที่ source code กำลังเตรียมที่จะ commit เพื่อยืนยันการเปลี่ยนแปลงก่อนที่จะเก็บลงในสถานะ Local repository
* **Local repository -** เป็นสถานะที่มีการเก็บบันทึกข้อมูลการเปลี่ยนแปลงของ source code ลงไปที่ Git repository ที่เป็น Local (ที่เครื่องของแต่ละคน)
* **Remote repository -** เป็นสถานะที่มีการเก็บบันทึกข้อมูลการเปลี่ยนแปลงของ source code ลงไปที่ Git repository ที่เป็น Hosting (ที่เครื่องเซิร์ฟเวอร์)

![สถานะต่าง ๆ ของ Source Code ที่จะเก็บอยู่ในระบบของ Git](https://lh4.googleusercontent.com/_eLcF2q1DwesUSeESAjtIFadz7HE24DqqEDs8jzvq6KLrsni2xngBDsuNsUQmmafQEmp8SDCJ_p8-zcAENcD1p6fl8GFZDmjrKBUIB6fqJOsyHG9VHSjqG19jkt9uPchcaZ14P61)

## **การเรียกใช้งาน Git**

### **Command Line** &#x20;

* พิมพ์คำสั่งของ Git จาก Terminal หรือ Command Prompt โดยตรง

![ตัวอย่าง Command line](https://lh5.googleusercontent.com/F58MUkDV-ycjayEsrKlfNgA01nt8thTini2OoGkDsEt1P0tl-cGTAAz2STlHkmvaa8Idt_MfLkt3T2rnHuHYSX6xXGrfpYzJRTqFDTGLJmEEz6-FV88ra7UWmJivZh_ekLBcJ0v3)

### **GUI**

* ใช้โปรแกรมพวก Git GUI อย่าง SourceTree, GitKraken  และ GitHub Desktop เป็นต้น

![ตัวอย่าง GitHub Desktop](https://lh3.googleusercontent.com/kfeelAJ5FZZjaWnToDtUssNk6yN01UODMaPLeOhriLUa70jSQNoyjvvuFuIYIOzrkoFQ1_N22-AlDN8_D6zKFk_k8FL7-wpvFR4jHBxjTP5KDzZVPMP_z1KEwXCvCrz3I-tJo6z5)

## แหล่งอ้างอิง 📑

{% embed url="<https://akexorcist.medium.com/%E0%B8%A1%E0%B8%B2%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%A3%E0%B8%B9%E0%B9%89-git-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%87%E0%B9%88%E0%B8%B2%E0%B8%A2%E0%B9%86%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-427398e62f82>" %}

{% embed url="<https://medium.com/@pakin/git-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-git-is-your-friend-c609c5f8efea>" %}
