วันศุกร์ที่ 8 สิงหาคม พ.ศ. 2557

เริ่มใช้ Bitbucket

เริ่มต้นเลย
1. สมัครใช้งาน bitbucket
- ไปที่ https://bitbucket.org
- เมื่อสมัครเสร็จไปที่ปุ่ม create จากนั้นตั้งชื่อ repository
2.ลง Git
- ไปที่เว็บนี้ กดโลด http://git-scm.com/ แล้วกดปุ่ม Download
- Next ยาวเลยไม่ต้องถาม จนถึงหน้านี้ให้เลือก use git from the windows command prompt ดังรูป

- Next ต่อจนเสร็จ
- จากนั้นเปิด git bash  เพื่อสร้าง ssh key ในการอัพโหลดไฟล์ต่างๆไปที่ bitbucket
   - พิม cd ~/.ssh เพื่อดูว่าเราสร้าง ssh key ไว้รึยัง ถ้ายังมันจะขึ้น No such file or directory
    - พิม ssh-keygen -t rsa -C"ใส่อีเมลที่ใช้สมัคร bitbucket" เพื่อสร้าง ssh key จากนั้นมันขึ้นไรก็ enter ไปเลยไม่ต้องใส่
    - พิม clip <~/.ssh/id_rsa.pub เพื่อ copy ssh key
- ไปที่ repository ที่สร้างไว้ที่ https://bitbucket.org 
- เลือกคลิกรูป avatar ขวาบน แล้วเลือกเมนู manage account ดังรูป



- มันจะขึ้นหน้าต่างใหม่มาให้ แล้วเลือกเมนู SSH KEYS ด้านซ้ายล่าง


- จะได้หน้าต่างขึ้นมา กด Add keys แล้ว paste ssh key ที่เราสร้างไว้ ลงไป  ส่วนตรง Label  ใส่ก็ได้ไม่ใส่ก็ได้




3. ลง Sourcetree
- โหลดจาก http://www.sourcetreeapp.com/
- Next ยาวเลย จนถึง SSH Client Configuration ก็ให้เลือกเป็น OpenSSH
- ละก็ใส่ user pass ของ bitbucket จากนั้นระบบมันจะลองเชื่อมต่อให้
- จากนั้นก็กด finish
- เปิดโปรแกรม Sourcetree
ไปที่ repository ที่สร้างไว้ที่ https://bitbucket.org เลือก Clone in sorce tree ดังรูป
- ไปที่โปรแกรม  Sourcetree  Source Path เป็นที่อยู่ของ repository บนเว็บ Destination path คือที่ที่เราจะสร้าง project ต้องเป็น folder ว่างๆ) จากนั้นกดปุ่ม clone ดังรูป ถ้าหากเรามีไฟล์โปรเจคอยู่แล้วก็ย้ายไฟล์ต่างๆเข้ามาที่ folder นี้หลังจาก clone แล้ว


- ไฟล์ต่างๆที่เราเพิ่งใส่ไปจะมาให้เห็นเลยจากนั้นกดปุ่ม ดังรูปเพื่อ add ไฟล์ต่างๆเข้าโปรแกรม


- กดปุ่ม commit เพื่อ save ลง repository ในเครื่องของเรา

- กดปุ่ม push  เพื่อ save repository ไว้บน bitbucket.org
# ส่วนต่อไปนี้ Copy มาจาก http://yothinix.blogspot.com/2013/12/tde-2-git-basix-command.html
ขี้เกียจพิมต่อละ 555
Fetch/Pull
       Fetch จุดประสงค์ของมันก็เพื่อเช็คว่ามีการกระทำอะไรใดๆ ใน remote repository ที่เราใช้อยู่รึเปล่า ซึ่งถ้ามีตัวโปรแกรมก็จะแจ้งเตือนเป็นตัวเลขจำนวน Commit พร้อมกับลูกศรลงอยู่ข้างหลัง Branch นั้นๆ หรือถ้าเราอยู่ใน Branch นั้นแล้วมันจะแสดงเป็นตัวเลขแดงๆ อยู่ตรงปุ่ม Pull กลายๆ ว่าเมิงกดกูซักทีเหอะนะ ซึ่งถ้าเรากดปุ่ม Pull ก็จะเป็นการดาวน์โหลดการเปลี่ยนแปลงใดๆ ที่เกิดใน Branch นั้นที่อยู่บน Remote repo ลงมายังBranch เดียวกันที่อยู่เครื่องเราเป็นการทำให้แน่ใจว่าเครื่องเรามี Source code ล่าสุดพร้อมสำหรับการพัฒนาต่อเสมอ

Commit
       คำสั่งนี้เป็นคำสั่งพื้นฐานที่สุดและใช้บ่อยที่สุดสำหรับ Git โดยการ Commit คือการเก็บบันทึกการเปลี่ยนแปลงใดๆ ที่เราทำใน  Working Folder หรือโฟลเดอร์ Project ของเราเองไว้ ซึ่งก็จะแบ่งเป็น 2 Mode หลักๆ คือ Stage changes และ Working copy change โดย Stage change คือการเปลี่ยนแปลงที่เรากระทำกับไฟล์ในโฟลเดอร์นั้นๆ เช่น การสร้างไฟล์, การลบไฟล์ รวมถึงการ Merge Branch หลายๆ ครั้งเราก็จะใช้ Mode นี้ด้วย ส่วน Mode Working copy change คือการเปลี่ยนแปลงใดๆ ที่เรากระทำกับไฟล์ใดๆ ที่มีอยู่แล้วในโฟลเดอร์นั้น (ซึ่งอันนี้ใช้บ่อยที่สุดละ) ข้อควรระวังก็คือ ถ้าเราต้องการเปลี่ยนไป Branch อื่นๆ เช่นจาก Feature หนึ่งไปอีก Feature หนึ่งถ้ามีการเปลี่ยนแปลงใดๆ ที่ทำไปแล้วก็ควรจะ Commit ก่อนเปลี่ยน Branch (ซึ่งโดยปกติแล้วโปรแกรมจะเตือนไม่ให้เปลี่ยน แต่ก็จะมีตัวเลือก discard all change ไว้ในกรณีขี้เกียจด้วย)

Push
       หลังจากเรากด commit ไปแล้วการเปลี่ยนแปลงนั้นก็เพียงแค่บันทึกไว้ใน Local repository ซึ่งถ้าเครื่องเราHDD พัง OS เจ๊งก็ยังมีโอกาสที่เราจะสูญเสีย Source code ที่เราอุตส่าห์พร่ำเขียนมา ซึ่งการที่เรามี Remote repository ก็เพื่อป้องกันเหตุร้ายดังกล่าว (แต่ก็ใช้ว่ามันจะไม่มีโอกาสเสียเลย) รวมถึงเป็นการ Synchronous ตัวงานหรือโมดูลที่เราทำเข้ากับส่วนกลางเพื่อให้คนอื่นในทีมได้ใช้งานร่วมกันรวมถึงรวมเข้าด้วยกันในภายหลังโดยการPush เราสามารถเลือกได้ว่าจะ Push ทุก Branch ที่มีอยู่ในเครื่องหรือเพียงแค่ Branch ที่เราได้ทำการเปลี่ยนแปลงไปในข้างต้น ข้อควรระวังคือโปรแกรมจะไม่ให้เรากด Push ถ้ามีการค้าง Pull ไว้ใน Branch ที่เราเลือก วิธีแก้ก็คือPull มันลงมาซะแล้วค่อยกด Push ใหม่อีกรอบหนึ่ง

Branch/Merge/Checkout
       อย่างที่ผมได้กล่าวไปแล้วในตอนที่ เรื่องแนวทางการแตก Branch จากประสบการณ์ผมเคยแตก Branchเองจริงๆ น้อยมากครับ ส่วนใหญ่จะใช้ฟีเจอร์ Git Flow ให้เป็นประโยชน์โดยหลังจากที่เราสร้าง Project มาแล้วการกด Git Flow ครั้งแรกจะเป็นการ Initial ตัว Local repository เราว่า เราจะทำงานแบบ Git Flow นะโดยตัวโปรแกรมก็จะแยก Branch ใหม่ให้เองเป็น Master กับ Develop ก่อนโดยเราจะถูกสลับ (Checkout) มาไว้ที่ Branch นี้โดยอัตโนมัติ หลังจากนั้นแล้วเมื่อเราต้องการพัฒนาฟีเจอร์ใหม่ใดๆ ก็กดตรง Git Flow แล้วเลือก Start New Featureซึ่งส่วนใหญ่แตกแล้วแตกยาว เพราะหลายงานที่ทำอยู่ปัจจุบันก็ยังทำไม่เสร็จจน Finish Feature ซึ่งตัวโปรแกรมจะทำการรวม (Merge) ตัว Branch Feature นั้นๆ เข้า Develop ให้โดยอัตโนมัติ วิธีแก้ปัญหาในปัจจุบันส่วนใหญ่ผมยังใช้การ Merge เองด้วยมือในตอนวันท้ายๆ ของสัปดาห์ซึ่งเป็นการ Release ตัว Project ออกมาเป็นเวอร์ชั่นย่อยๆ รวมถึงเป็นการรวม Source Code จากคนอื่นๆ ในทีมมาอัพเดทไว้ที่ Branch Develop ด้วย ซึ่งถ้าคนในทีมเริ่มแก้ไฟล์เดียวกันเมื่อไร สิ่งที่ตามมาอยู่ในย่อหน้าถัดไปครับ
       Merge Conflict เป็นปัญหาที่เกิดขึ้นจากการแก้ไขไฟล์เดียวกันในบรรทัดเดียวกันจากต่าง Branch กันซึ่งพอเราจะกด Merge ตัวโปรแกรมก็จะงงว่าตกลงเราจะเอาอันไหน ซึ่งมีตัวเลือกในการแก้ (resolve conflict) อยู่ ทางคือใช้ไฟล์ของเรา หรือใช้ไฟล์จากอีก Branch หนึ่งที่กำลังจะรวมเข้าไป ซึ่งอันนี้ก็ขึ้นอยู่กับสถานการณ์ว่าจะใช้แบบไหนในการแก้
  

ไม่มีความคิดเห็น:

แสดงความคิดเห็น