GIT เป็นระบบจัดการซอร์สโค้ด (Source Code Management) หน้าที่เดียวกันกับ CVS, SVN ทั้งหลาย หรือมีการเรียกอีกอย่างหนึ่งว่า Revision Control
โปรแกรมเมอร์หลายคน คงมีอาการยิ่งแก้ยิ่งแย่ และอยากย้อนกลับไปในจุดที่โค้ดของตัวเอง ยังใช้งานได้ดีอยู่ ระบบ Revision Control คือคำตอบ
เหตุที่ผมชอบ GIT
- ทำงานแบบ Off-line ได้ ไม่จำเป็นต้องติดต่อกับ Repository server เวลาสั่ง commit, checkout
- ไม่รกรุงรัง เหมือน SVN เพราะ GIT มีไดเรคทอรี .git มาเพียงไดเรคทอรีเดียว ต่างกับ SVN ที่สร้าง .svn ในทุกๆไดเรคทอรีของโปรเจคท์
หากสนใจ อยากทดลองใช้ ผมจะแนะนำสั้นๆ เร็วๆ ตามนี้
ผมขอข้ามขั้นตอนการติดตั้งไปก่อนนะครับ เพราะมันไม่ได้ยาก กด Next ไปเรื่อยๆ ก็เสร็จแล้ว ผมข้ามจั้นตอนการสร้างโปรเจคท์ใหม่เลยดีกว่า
เริ่มจากมองหาไดเรคทอรี ที่คุณต้องการใช้งาน GIT ผมสมมติเป็น
D:\www\project.localhost
จากนั้น เรียก GIT Shell ขึ้นมา แล้วไปยังไดเรคทอรี่โปรเจคท์ของเรา
จากนั้นสั่งสร้าง Repository ด้วยคำสั่ง git init
แล้วจะมีไดเรคทอรี .git ในโปรเจคท์ของเรา
จากนั้นลองสร้างไฟล์ขึ้นมา สมมติผมสร้างไฟล์ index.php ขึ้นมา และข้างในมีโค้ด
กลับไปที่ GIT Shell พิมพ์คำสั่ง git status
กด q เพื่อออกจากโหมดนั้น แล้วพิมพ์คำสั่ง git add index.php
จากนั้น พิมคำสั่ง git commit -m 'Start repository'
แล้วผมก็กลับไปแก้ไขโค้ดให้เป็นตามนี้
จะเห็นว่ามีการ modified อยู่หนึ่งไฟล์ ถ้าอยากรู้ว่า มีการเปลี่ยนแปลงอะไรบ้าง ก็สั่ง git diff และตามด้วยชื่อไฟล์ ที่ต้องการดูความแตกต่าง หากไม่ระบุ ระบบจะแสดงความแตกต่างของทุกไฟล์ที่มีการเปลี่ยนแปลง
จากภาพ สีแดงคือส่วนที่หายไป สีเขียวคือส่วนที่เพิ่มเข้ามา
ทดลอง commit รอบ ด้วย git add และ git commit
*สิ่งสำคัญคือ ต้องสั่ง git add ก่อน git commit ทุกครั้ง*
ทีนี้ลองสั่ง git log เพื่อดูประวัติการ commit
ถ้าอยากย้อนกลับไปยังจุดที่ commit ก่อนหน้านี้ สั่ง git checkout แล้วตามด้วย หมายเลขที่ต้องการย้อนกลับไป ตัวอย่างเช่น
ถ้าสั่ง git log อาจจะดูยากไปนิด ลองใช้ gitk ดูครับ
หน้าตา gitk
จุดเหลือง คือจุดที่ checkout ออกมา
คงจะช่วยให้มองเห็นภาพขึ้นมาบ้างนะครับ ต้องทดลองใช้ดู ถึงจะเข้าใจและใช้เป็น
รอบหน้า ผมจะพูดต่อไปในเรื่อง Work flow การสร้าง Branch, Merge, Solve conflict
วันนี้เอาลิงค์ไปก่อนครับ
- ต้นฉบับ http://git-scm.com/
- GIT for Windows http://code.google.com/p/msysgit/
รวม Tutorial จากเว็บต่างๆ
- http://github.com/blog/333-easy-git
- http://www.webdesignerdepot.com/2009/03/intro-to-git-for-web-designers/
- http://book.git-scm.com/index.html
- http://peepcode.com/products/git (แบบเสียเงินนะครับ)