เคยเขียนโปรแกรมร่วมกับคนอื่นกันมั้ยครับ ? ปกติแล้วเราทำยังไงกัน แบ่งงานกันยังไง แยกกันทำคนละฟังก์ชันคนละส่วนรึเปล่า ? แล้วเวลาที่มีการแก้โค้ดในส่วนเดียวกันจะจัดการยังไง?
“เคยมั้ย .. เวลาที่อยากจะทดลองอะไรบางอย่างแต่ก็กลัวโค้ดที่เขียนไปแล้วจะพัง ? จนต้องก็อปไฟล์แยกโฟลเดอร์เอาไว้ พอสุดท้ายจะเอาไปใช้งานจริงก็เริ่มไม่แน่ใจว่าอันไหนที่เป็นเวอร์ชันล่าสุด”
ถ้าเขียนโค้ดไปซักระยะนึงยังไงก็ต้องพบเจอปัญหาเหล่านี้วนซ้ำๆอย่างแน่นอน จึงได้มีเครื่องมือที่เป็นดั่งพระเจ้าเข้ามาโปรดเหล่าโปรแกรมเมอร์ ให้หลุดพ้นจากลูปที่โหดร้ายเหล่านี้ นั่นก็คือ Git นั่นเอง
Git คือ … ?
Git เป็นเครื่องมือที่ช่วยจัดการเวอร์ชันของโค้ดให้กับเรา โดยจะเก็บประวัติว่าไฟล์แต่ละไฟล์ถูกสร้าง/ลบ/แก้ไขโดยใคร เมื่อไหร่ และอย่างไรเอาไว้ทั้งหมด ทำให้เราสามารถติดตามการเปลี่ยนแปลงของโค้ดได้ตลอด หรือแม้กระทั่งย้อนเวลาโค้ดกลับไปก่อนตอนที่จะพังก็ยังทำได้
ดาวน์โหลด และ ติดตั้งยังไง ?
สำหรับการติดตั้งนั้นก็สามารถเข้าไปดาวน์โหลดในเว็บไซต์ของ Git ได้เลย มีตัวติดตั้งให้ติดตั้งกันง่ายๆ โหลดไฟล์จากหน้าเว็บได้เลยgit-download
จากนั้นก็เปิดไฟล์
แล้วก็กด install เป็นอันเรียบร้อย
สำหรับคนที่ใช้ Ubuntu ก็ติดตั้งด้วยคำสั่งด้านล่างนี้ได้เลย
apt-get install git
หรือ linux อื่นๆก็ลองเข้าไปดูคำสั่งได้จากหน้าเว็บของ Git ได้เช่นกัน Git
หลังจากติดตั้งแล้วก็ต้องทำการตั้งค่ากันซักเล็กน้อยเพื่อใช้งาน คือตั้งชื่อกับอีเมลนั่นเอง
git config --global user.name "ชื่อที่จะใช้" git config --global user.email "กับอีเมลที่จะใช้"
อย่าลืม double quote “ ” ครอบชื่อกับอีเมลด้วยนะ !!!
คำสั่งพื้นฐานมีอะไรบ้าง ?
มาดูคำสั่งพื้นฐานที่ต้องใช้ใน Git กันบ้างดีกว่า
- git Init
เป็นคำสั่งที่มีไว้ใช้งานที่โฟลเดอร์งานนั้นเช่น
cd workspace git init
การทำงานคือเข้าไปในโฟลเดอร์ workspace แล้วให้ git ทำงานที่ตำแหน่งปัจจุบัน ก็คือ workspace นั่นเอง
- git add
ใช้สำหรับเพิ่มไฟล์เข้าไปใน stage (เป็นการระบุว่าต้องการที่จะสร้างความเปลี่ยนแปลงไฟล์ไหนใน git บ้าง) เช่นgit add main.html
หรือถ้าต้องการเพิ่มทั้งโฟลเดอร์
git add .
- git status
ใช้สำหรับตรวจสอบว่ามีไฟล์ไหนที่ยังไม่ได้ add หรือมีการเปลี่ยนแปลงแล้วยังไม่ถูกจัดการบ้าง
git status
- git reset
เป็นการย้อน version ไฟล์ให้กลับไปอยู่ในสภาพเดิมก่อนที่จะ add ไฟล์เข้าสู่ stage
git reset
- git commit
ยืนยันการเปลี่ยนแปลงไฟล์ที่ถูก add ลงใน stage โดยสามารถใส่ comment โดยการเติม -m ด้านหลัง เช่น
git commit -m “change function b”
- git clone
เป็นการก้อปปี้โปรเจคจำลองมาจากโปรเจคหลัก โดยเราจะสามารถเปลี่ยนแปลงไฟล์ในโปรเจคจำลองนี้ได้โดยที่ไม่กระทบโปรเจคหลัก (ไฟล์จำลองที่เราทำการเปลี่ยนแปลงจะเรียกว่า local repository และไฟล์หลักที่อยู่คนละที่จะเรียกว่า remote repository)
git clone
- git push
เป็นการส่งไฟล์ที่ commit แล้วเข้าสู่ remote repository
git push
- git fetch
ใช้ตรวจสอบว่าไฟล์ ในlocal กับremote มีความแตกต่างกันหรือไม่ ไฟล์ไหนใหม่กว่า หรือล้าสมัยอยู่กี่ commit (ซึ่งตรงนี้ comment จะช่วยเราได้มากว่า commit นี้เราทำอะไรลงไป เพราะฉะนั้นควร comment อยู่เสมอและต้องเขียนให้สื่อความหมาย)
git fetch
- git pull
เป็นการดึงไฟล์ที่มีการเปลี่ยนแปลงใน remote มาเปลี่ยนแปลงใน local ซึ่งเป็นการใช้คำสั่ง git fetch ตามด้วย git mergegit pull
Branch และ คำสั่งที่ต้องใช้
จากคำสั่งพื้นฐานที่ผ่านมาก็น่าจะพอนึกภาพออกว่าจะใช้งาน Git ยังไง จะย้อนเวอร์ชันยังไง แต่ว่าถ้าอยากจะทดลองอะไรใหม่ๆ หรืออยากจะเขียนฟังก์ชันบางอย่างเพิ่ม แต่ก็ไม่อยากให้กระทบกับโค้ดที่ใช้งานได้แล้ว และก็ไม่อยากให้วุ่นวายกับคนอื่นๆเวลาย้อนเวอร์ชัน เราจะทำยังไงดี?
เราจึงมี Branch มาเพื่อจัดการเรื่องเหล่านี้นั่นเอง ซึ่งการใช้งานก็ตามชื่อของมันเลยคือเป็นการแตกสาขาออกมานั่นเอง จะเพื่อทดลองอะไรบางอย่าง หรือเพื่อแยกกันพัฒนาฟีเจอร์ของโปรแกรมก็ได้เช่นกัน
มาดูคำสั่งที่ใช้เกี่ยวกับการใช้งาน branch กัน
ทีนี้เราจะทำอะไรใน brach นี้ก็ไม่กระทบกับ branch อีกต่อไป เช่นใน branch master เรามีไฟล์อยู่ 1 ไฟล์ชื่อ index.html จากนั้นเราลองย้ายไป my_new_branch ด้วยคำสั่ง “git checkout my_new_branch”
แล้วสร้างไฟล์เพิ่มอีกไฟล์นึงชื่อ hello_test.html และทำการ commit ให้เรียบร้อย
เมื่อกลับไปยัง master อีกครั้งก็จะเห็นว่ามีแต่ไฟล์ index.html ไม่มี hello_test.html เพราะว่าเราสร้างไว้คนละ branch นั่นเอง
ถ้าเราต้องการจะรวม branch เข้ามาใน master ก็ทำได้ด้วยการ merge นั่นเอง ซึ่งนอกจากจะใช้ในการรวม local กับ remote repository ก็ยังใช้ในการรวม branch ได้ด้วย มาลองรวม my_new_branch เข้ากับ master กันเลย
เริ่มจากต้องอยู่ใน branch master ก่อนถ้ายังไม่อยู่ก็ใช้คำสั่ง “git chekout master” ให้เรียบร้อย และพิมพ์คำสั่ง
git merge my_new_branch
ไฟล์ที่อยู่ใน my_new_branch ก็จะเข้ามาอยู่ใน master แล้ว
ทั้งหมดนี่ก็คือพื้นฐานเกี่ยวกับ git ที่ควรจะรู้เอาไว้ครับ แต่จริงๆแล้วนอกจากการใช้ git ผ่าน command line แบบนี้แล้วก็ยังมีโปรแกรม git ที่มีหน้าตาสวยงามให้เราใช้กันด้วยนะ ซึ่งถึงจะใช้แบบนั้นก็ยังมีพื้นฐานเป็นคำสั่งที่เอามาให้รู้จักกันในวันนี้อยู่ดี ถ้าใครอยากลองใช้ดูก็เข้าไปเลือกหาได้จากลิงค์นี้เลย GUI Clients