วันศุกร์ที่ 18 กรกฎาคม พ.ศ. 2557

GitHub 3 times โย่



GitHub 3 times โย่


เรื่องของเรื่องคือ ก็ใช้ GitHub มาซักพักใหญ่แล้ว ถึงจะไม่เข้าใจความสามารถทั้งหมดก็เถอะนะ แต่ว่าที่ใช้เป็นอยู่ก็น่าจะเพียงพอที่จะเป็นประโยชน์กับคนหลายๆที่ได้แล้ว






มาเริ่มกันที่ GitHub คืออะไร

GitHub คือ 1 ใน Git
แล้ว Git คืออะไร เอาง่ายๆมันคือ Version Control 

ความสามารถของมันก็ประมาณช่วยการการดูแล และจัดการการเปลี่ยนแปลงต่างที่เกิดขึ้นกับ ไฟล์ที่เราเลือกไว้ คือปกติเวลาเราแก้ไขไฟล์อะไรเราจะรู้ผลลัพท์สุดท้ายอย่างเดียว แต่เจ้า Git เนี่ยมันสามารถจดจำได้ว่าวันไหนเมื่อไรเราทำอะไรกับไฟล์นี้ไปบ้าง

อ่ะ อ่ะ อ่ะ นายคิดเหมือนที่เราคิดมั้ย
ถ้าเราใช้ Git มาเป็นตัวควบคุม เวลาที่เราทำงานกับไฟล์ๆเดียวกัน ที่ละหลายๆคน (งงมั้ย) เจ้า Git เนี่ย จะช่วยให้เรารู้ว่าไฟล์นี้ใครทำอะไรไว้บ้าง ลองนึกภาพดูนะ ว่าเรารู้ตัวการที่ก่อ Bug ได้ อืมมมมมมมมม เข้าท่า



OK เข้าเรื่อง GitHub ดีกว่า

เจ้า GitHub เวลาทำงาน มันก็จะคุมไฟล์ที่เราเลือกไว้ จะไฟล์เดียวหรือหลายไฟล์ก็ได้ เราเรียกทั้งก้อนของไฟล์ที่ GitHub คุมว่า Repository ก็เข้าใจง่ายๆว่าอะไรก็ตามที่อยู่ใน Repository เจ้า GitHub ดูแลให้หมด

ความเจ๋งของ GitHub คือความสามารถ Offline เราสามารถ Commit ได้ในขณะที่ไม่ได้ Online แล้วค่อยไป push แล้วตัว GitHub จะทำการ Merge ส่วนที่เราแก้ไข เข้ากับส่วนของคนอื่นให้เองเลย แต่ถ้ามันงงว่าจะ Merge ยังไงดี มันจะถามเราว่าจะ Merge ยังไง

พอเรารู้ว่ามีคนอื่นมาแก้ไขไฟล์เราก็ pull ลงมา ถ้าไฟล์ที่ pull ลงมามันมีส่วนที่แก้ไข เจ้า GitHub จะทำการ Merge ให้เอา และแน่นอนถ้ามันงง เราก็ต้อง Merge แบบอัตโนมือนะ





Commit, Push, Clone, Merge, Pull
คำเหล่านี้น่าจะเป็นคำหลักๆ ที่ใช้บ่อยๆๆๆๆๆๆๆๆๆๆ มาก ถามว่ามากขนาดไหน ก็เอาเป็นว่าขนาดใช้ Tool แบบ GUI ก็ยังจำได้แบบไม่ยาก





ทีนี้ในเรื่องการใช้งาน

จริงๆแล้วการใช้งาน GitHub จะทำผ่าน Command Line ซึ่ง.....(เข้าใจตรงกันนะ)....
มันก็เลยต้องมีคนทำ Tool ออกมาเป็น GUI ให้ใช้ง่ายๆๆๆๆๆ ขั้นตอนก็ไม่มีอะไรมาก ลองฝึกในเว็บของ GitHub ให้พอเห็นภาพ Commit, Push, Clone, Merge, Pull แล้วก็ใช้ Tool ได้เลย ไม่ยาก เมื่อเทียบกับการหัดใช้ Java หรือ obj C แน่นอน

ตัว Tool ที่เป็น GUI ก็มีทั้งของ GitHub เอง และของเจ้าอื่นๆอีกมากมาย เลือกใช้ได้ตามสะดวกเลยทีเดียว


ใช้ได้ฟรีมั้ย

เจ้า GitHub เนี่ย ใช้ฟรีครับ ฟรี ฟรี ฟรี แต่..... อะไรที่เราเอา Repository ไปฝากไว้กับ GitHub มันจะ Publish นะ ถ้าอยาก Private ต้องเสียเงิน

แต่ แต่ แต่ เราสามารถเปิด Server เองได้ ด้วย GitLab (คนเจ้ากับ GitHub นะ)  เท่าที่รู้ตัวที่ดังที่สุด คือ www.gitlab.com นี่แหละ



ภาคปฏิบัติ

สำหรับ Tool ที่ใช้กับ GitHub เราก็ใช้ Tool ของ GitHub นี่แหละง่ายดี (จริงๆแล้ว มีหลายตัวมาก แต่เลือกไม่ถูก เลยเอาตัวนี้) แต่ว่าหน้าตาของ Tool ที่รันบน Mac กับ Windows มันจะแตกต่างกันนิดๆ แต่ก็เข้าใจได้ไม่ยาก

หลักการใช้งานคือถ้าเรามีโปรเจ็คของเราอยู่แล้วเป็น Folder แล้วเราต้องการเอา Folder ขึ้นบน Repository เราก็จะต้องสร้าง Repository ขึ้นมาใหม่ โดยชี้ Path ไปที่ๆ Folder งานของเราอยู่ แล้วตั้งชื่อ Repository ให้ตรงกับ Folder งานของเรา แล้วตัว Tool จะอ่านไฟล์ทั้งหมดภายใต้ Folder งานของเรา แล้วเราก็จัดการ Commit + Push ได้เลย แต่ต้องไม่ลืมที่จะใส่ข้อความกำกับการ Commit ด้วยนะ ไม่งั้นมันจะไม่ยอม Commit

สำหรับข้อความกำกับการ Commit แค่บังคับว่าต้องมี แต่ก็ไม่มีการกำหนดตายตัวว่าต้องเป็นอะไร ดังนั้นหลักนิยมคือ บอกไปว่าเราทำอะไรไปบ้างก่อนการ Commit นี้ ประมาณนี้


ที่นี้ เรามาดูหน้าตาของ Tool กัน เริ่มที่



Mac OS

โหลดที่ https://mac.github.com/
จะเห็นว่า ใน Repository นี้ (mac.github.com) มีการ Commit โดยคนหลายคน หลายครั้งที่ผ่านมา และยังสามารถบอกได้ว่า การ Commit ครั้งนี้มีอะไรที่เปลี่ยนแปลง






Windows

โหลดที่ https://windows.github.com/
เนื่องการที่คือโปรแกรมที่เอาไว้ใช้งาน GitHub ถึงแม้จะรันบน OS ที่ต่างกัน แต่ความสามารถมันก็แบบเดียวกันนี่แหละ แต่สังเกตุมั้ยว่า หน้าตาโปรแกรมตัวนี้ออกแบบมาตาม Modern Design ที่ Microsoft ภูมิใจนักหนา เดะๆเลย จะว่าไป นี่เป็นโปรแกรมตัวแรกเลยนะ ที่เป็น Modern รันบน Desktop โหมด ธรรมดาได้ ที่ผู้เขียนได้ใช้ (ปกติ App ที่เป็น Modern จะบังคับให้รันใน Modern โหมด)





มาถึงตรงนี้แล้ว

ก็บอกได้เลยว่ามาใช้พวก Version Control กันเถิด ถึงจะบอกว่าทำคนเดียวไม่จำเป็นต้องใช้ แต่อย่างน้อยมันก็ช่วยเรื่อง Backup ได้ด้วย ยิ่งถ้าใน Project มีคนหลายคนอันนี้ยิ่งสำคัญใหญ่เลย

บทความนี้ได้แรงบรรดาลใจจาก
@nuuneoi - http://nuuneoi.com/blog/blog.php?read_id=704