แสดงบทความที่มีป้ายกำกับ GitHub แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ GitHub แสดงบทความทั้งหมด

วันพุธที่ 5 พฤศจิกายน พ.ศ. 2557

เรามาใช้ GitHub กันนะ นะ นะ




จากคราวที่แล้วเขียนบทความเรื่อง GitHub แบบเบื่องต้นไป วันนี้เรามาเข้าสู่ภาคใช้งานจริงกันเถิด

ปล. ในบทความนี้เราจะไปพูดถึงแล้วนะ ว่า GitHub คืออะไรหน้า ตาเป็นไง ไปตามอ่านในบทความเก่ากันเองเน้อ

ปล๒. จะพูดถึงเรื่องจากใช้งานหลักๆนะ อะไรที่มัน advance มาก ควรไปลุยต่อเอง เข้าใจตรงกันนะ

ขอท้ายความนิดนึงนะ ในบทความที่แล้ว บอกไว้ว่า ตอนนี้ GitHub ออก Tool ที่เป็น GUI มาแล้ว พราะฉะนั้นถ้าใครไม่ชอบแบบ Command Line ก็ใช้ตัวนี้ก็ได้ ความสามารถ ไม่ต่างกัน

OK นะ อย่างที่บอกคือ GitHub นี่คือ Version Control ที่ช่วยเราทำงานอย่างมากมาย ประโยชน์มหาศาล ดังนั้นใครอ่านมาถึงตรงนี้แล้วก็ใช้กันเถอะนะ จะได้ไม่เดือดร้อนลูกหลานนะ

ตอนนี้ผมเข้าใจว่าทุกคนใช้ Commit / Push / Update กันเป็นแล้วนะ

ทีนี้เรื่องของเรื่องคือ ถ้าโปรเจ็คนี้มีคนทำแค่คนเดียว เท่าที่เราทำได้มันก็พอแล้ว แล้วถ้ามีหลายคนล่ะ แล้วถ้าทุกคนต้องการที่จะทำงานบน Repo เดียวกัน Branch เดียวกันล่ะ อืมมมมมมมมมมมมมมมม

1 Repo with X Collaborators

ตรงนี้นะ ก็คล้ายๆการเพิ่มสิทธิ์เข้ามาในตัว Repo คนที่เราเพิ่มเข้ามาก็ทำอะไรได้เหมือนเราเลย ณ จุดๆนี้ ผมนี่บอกเลยว่าต้องทำบนเว็บครับ เข้าไปที่เว็บ GitHub ครับ แล้วเลือกที่ Repo ของเราที่เราต้องการจะเพิ่ม Collaborator นะครับ

แล้วทางขวามือจะมี Menu Setting นะครับ คลิ๊กเลยครับ



ก็จะเข้ามาที่หน้า Setting นะครับ ทางซ้ายนะครับ มีเมนู Collaborators  นะครับ นั่นแหละครับ คลิ๊กครับ



คราวนี้ก็จะเห็นว่ามีช่องให้ใส่ username ที่เราต้องการเอาเข้ามาเป็น Collaborator นะครับ กี่คนก็ใส่ไปเลยครับไม่ต้องเกรงใจ



นั่นแหละครับ เท่านี้เราก็จะไม่เดียวดายอีกต่อไปแล้วใน Project เรา เย่


ต่อมานะครับ พอเรามี Collaborator เยอะๆ ต่างคนต่าง Commit นะครับ นึกภาพนะครับนึกภาพ ถ้ารัว Commit กันนะครับ เราจะรู้มั้ยครับ ว่าใคร Commit อะไร ตอนไหน โอวววววว จริงๆดูจาก History ได้นะ แต่มันไม่เท่ มันจะเท่นะถ้า มี Email แจ้งมาว่า ใคร Commit อะไร ตอนไหน โอววววววชีวิตแสนดี

Notification Email When Commit

ตัว GitHub รองรับความสามารถนี้เรียบร้อยแล้วครับ แต่ชีวิตไม่ง่ายครับ ยังไม่สามารถทำแบบว่าใน Setting ส่งให้ Collaborator คนไหนบ้าง

อ่ะ แล้วยังไงล่ะทีนี้ คือเราสามารถเซ็ทให้ GitHub ส่ง Email แจ้งเมื่อมี Commit ได้ แต่ได้แค่ 2 Email เท่านั้นนะ อ้าว แล้วถ้ามี Collaborator เป็น 10 คนทำยังไงล่ะทีนี้ ก็ต้องใช้ Mail Group สิครับ Group เดียว จะกี่คนๆก็ไหว Group รับได้

ขั้นตอนคร่าวๆก็คือ
1. สร้าง Mail Group
2. เอา Email ของ Collaborator เข้า Mail Group (แนะนำให้ใช้ Google Group)
3. เอา Mail Group ไปใส่ใน GitHub

ง่ายมะ ง่ายยยยยยยยยย แต่ชิวิตจริงไม่ได้โรยด้วยกรีบกุหราบ เพราะทำแค่นี้เหมือนจะพอ แต่ไม่พอ เราต้องเอา noreply@github.com มาใส่ใน Google Group ของเราด้วย


ส่วนขั้นตอนการเอา Mail Group ไปใส่ใน GitHub ก็ดูได้ที่
https://help.github.com/articles/receiving-email-notifications-for-pushes-to-a-repository/ และ
http://stackoverflow.com/questions/7015300/receiving-emails-on-git-push


ส่วนวิธีสมัคร Mail Group ไปลุยกันเองนะ

ปล๓. บทความนี้เน้นให้ลุยเองนะ ไม่บอกหมดแบบ 100%
ปล๔. ขอขอบคุณทุกคนที่อ่านมาจนจบนะครับ











วันศุกร์ที่ 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