Sunday, April 26, 2009

แนะนำ GIT

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 ขึ้นมา แล้วไปยังไดเรคทอรี่โปรเจคท์ของเรา

git01-win-git-shell.

จากนั้นสั่งสร้าง Repository ด้วยคำสั่ง git init

git02-git-init 

แล้วจะมีไดเรคทอรี .git ในโปรเจคท์ของเรา

git03-git-directory 

จากนั้นลองสร้างไฟล์ขึ้นมา สมมติผมสร้างไฟล์ index.php ขึ้นมา และข้างในมีโค้ด

git04-index-code 

กลับไปที่ GIT Shell พิมพ์คำสั่ง git status

git05-git-status-st

แล้วก็จะเห็นสถานะแบบนี้
git06-git-status-result

กด q เพื่อออกจากโหมดนั้น แล้วพิมพ์คำสั่ง git add index.php
git07-git-add-index 

จากนั้น พิมคำสั่ง git commit -m 'Start repository'
git08-commit-1st

สั่ง git status ดูอีกรอบ
git09-git-status-after-commit

แล้วผมก็กลับไปแก้ไขโค้ดให้เป็นตามนี้
git10-mod-code-01

สั่ง git status อีกรอบ
git11-git-status-after-mod-code 

จะเห็นว่ามีการ modified อยู่หนึ่งไฟล์ ถ้าอยากรู้ว่า มีการเปลี่ยนแปลงอะไรบ้าง ก็สั่ง git diff และตามด้วยชื่อไฟล์ ที่ต้องการดูความแตกต่าง หากไม่ระบุ ระบบจะแสดงความแตกต่างของทุกไฟล์ที่มีการเปลี่ยนแปลง
git12-git-diff-index
จากภาพ สีแดงคือส่วนที่หายไป สีเขียวคือส่วนที่เพิ่มเข้ามา

ทดลอง commit รอบ ด้วย git add และ git commit
git13-git-commit-2nd 

*สิ่งสำคัญคือ ต้องสั่ง git add ก่อน git commit ทุกครั้ง*
ทีนี้ลองสั่ง git log เพื่อดูประวัติการ commit

git14-git-log

ถ้าอยากย้อนกลับไปยังจุดที่ commit ก่อนหน้านี้ สั่ง git checkout แล้วตามด้วย หมายเลขที่ต้องการย้อนกลับไป ตัวอย่างเช่น
git15-git-checkout

กลับไปดูที่ไฟล์ซอร์สโค้ด
git16-source-code-after-checkout

ถ้าสั่ง git log อาจจะดูยากไปนิด ลองใช้ gitk ดูครับ
git17-call-gitk

หน้าตา gitk
git18-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 (แบบเสียเงินนะครับ)

1 comment:

Anonymous said...

ขอบคุณครับสำหรับข้อมูล อย่างไรจะคอยติดตามผลงานต่อไปนะครับ

พิศาล