เราสามารถใช้คำสั่ง Add เพื่อเพิ่มข้อมูล โดยทางเทคนิคแล้วเราจะเรียกโครงสร้างของข้อมูลที่ใช้งานว่า working tree เนื่องจากการใช้ Git ในการจัดการเวอร์ชันของข้อมูลนั้น เปรียบเสมือนรากของต้นไม้ ที่สามารถแตกกิ่งก้านสาขาจากแกนกลางได้
การเพิ่มข้อมูลทำได้โดยใช้คำสั่ง git add
เริ่มต้นด้วยการทดลองสร้างไฟล์ โดยเพิ่มข้อความลงในไฟล์ที่สร้าง ด้วยคำสั่ง
$ pico Changefile.txt
หรือใช้ editor อื่นๆ เพื่อเพิ่มข้อความ “change me” ลงในไฟล์ Changefile.txt
$ pico Deletefile.txt
หรือใช้ editor อื่นๆ เพิ่มข้อความ “delete me” ลงใน Deletefile.txt
ตรวจสอบข้อความในไฟล์ทั้ง 2 ด้วยคำสั่ง
$ cat Changefile.txt
และ
$ cat Deletefile.txt
ผลลัพธ์ที่ได้จากคำสั่งด้านบน
หลังจากสร้าง และเพิ่มข้อความลงในไฟล์ทั้ง 2 แล้ว ทดลองตรวจสอบสถานะด้วยคำสั่ง git status
ผลการตรวจสอบด้วยคำสั่ง git status
จะเห็นว่าไฟล์ทั้ง 2 อยู่ในสถานะ Untracked ซึ่งจะไม่สามารถติดตามการแก้ไขรายละเอียดของไฟล์ได้ วิธีการเปลี่ยนสถานะจาก untracked เป็น track จะใช้คำสั่ง git add
ที่กล่าวมาในตอนต้น
$ git add Changefile.txt
และ
$ git add Deletefile.txt
จากนั้นทดลองตรวจสอบด้วยคำสั่ง git status
อีกครั้ง
จะเห็นว่าหลังจากใช้คำสั่ง git add
ไฟล์ทั้ง 2 ถูกเปลี่ยนสถานะเป็น tracked เรียบร้อยแล้ว และแสดง state ว่าเป็น new file
คำสั่ง git add
เป็นคำสั่งที่ใช้ในการเปลี่ยนแปลงสถานะจาก untracked เป็น tracked เท่านั้น
อีกคำสั่งหนึ่งที่มีความสำคัญกับการใช้งาน git คือ git commit
โดยคำสั่งนี้ มีไว้สำหรับการบันทึก state ณ ขณะที่ใช้คำสั่ง commit ประโยชน์ของการใช้คำสั่งนี้คือ บันทึก state ของเอกสารเพื่อตรวจสอบความแตกต่างของไฟล์ที่ track ในแต่ละเวอร์ชันที่ทำการ commit และสามารถย้อนกลับได้
ทดลอง commit และกำหนด massage สำหรับการ commit ครั้งแรก
$ git commit -m Initial-State
ทดสอบเพิ่มเติมโดยการทดลอง เพิ่มข้อความลงในไฟล์ Changefile.txt, ลบไฟล์ Deletefile.txt และเพิ่มไฟล์ชื่อว่า Addfile.txt แล้วตรวจสอบสถานะด้วยคำสั่ง git status
อีกครั้ง
ผลลัพธ์ด้านบนแสดงให้เห็นว่า ไฟล์ที่ใช้คำสั่ง git add
ทั้ง 2 ไฟล์ก่อนหน้านี้ แสดงรายละเอียดการเปลี่ยนแปลง ส่วนไฟล์ที่ชื่อว่า Addfile.txt นั้น เป็นไฟล์ที่เพิ่งสร้างขึ้น และยังอยู่ในสถานะ untracked ซึ่งหากต้องการ track ก็ทำได้โดยใช้คำสั่ง
$ git add Addfile.txt
และหากต้องการบันทึก state การเปลี่ยนแปลงนี้ไว้ ก็ให้ใช้คำสั่ง
$ git commit -a -m "delete - Deletefile.txt and add - Addfile.txt"
สำหรับข้อความประกอบ commit สามารถระบุข้อความได้ตามต้องการ
เราสามารถสร้างเงื่อนไขของการ commit ได้ โดยสามารถกำหนดว่า เอกสารใด หรือเอกสารประเภทใด จะยกเว้น โดยการระบุเงื่อนไขเหล่านั้น ไว้ในไฟล์ .gitignore รายชื่อเอกสารที่ระบุในไฟล์ .gitignore นั้น จะไม่ถูก commit และถือว่าเป็นไฟล์ที่อยู่ในเงื่อนไขยกเว้นการ commit โดยใช้คำสั่ง
$ pico .gitignore
โดยระบุชื่อไฟล์ที่ต้องการยกเว้นการ commit ไว้ในไฟล์ดังกล่าว ตัวอย่างที่จะแสดงให้เห็นนี้ ได้มีการสร้างไฟล์ที่ชื่อว่า Newfile.txt โดยระบุชื่อไฟล์ดังกล่าวไว้ในไฟล์ .gitignore
ทดลองสร้างไฟล์ชื่อว่า Newfile.txt และ Oldfile.txt โดยระบุเฉพาะชื่อไฟล์ Newfile.txt ลงในไฟล์ .gitignore แล้วดูผลลัพธ์จากการใช้คำสั่ง git status
จะสังเกตเห็นว่าไฟล์ที่อยู่ในสถานะ untracked มีเพียงไฟล์ที่ชื่อว่า Oldfile.txt ส่วนไฟล์ที่ชื่อว่า Newfile.txt นั้น จะไม่แสดงให้เห็นเนื่องจากถูกระบุอยู่ในไฟล์ .gitignore
สำหรับเรื่อง state ของการ commit เพื่อให้เห็นภาพได้ชัดเจนเกี่ยวกับการทำงาน จะอธิบายด้วยภาพด้านล่างนี้ครับ