Skip to main content

ว่าด้วยเรื่องของ Git Bash+GitHub+Bitbucket

       ช่วงนี้ผมได้มีโอกาสทำโปรเจ็คร่วมกับคนอื่น แต่ปัญหาใหญ่ของเราก็คือ ทำไงให้เรา Sharing  code ระหว่างกันได้ มีวิธีใช้งานง่ายๆ และไม่มีปัญหาเกิดขึ้น ดังนั้นผมจึงหาข้อมูล และสรุปตกลงว่าเราจะใช้ "Git" กัน ซึ่งเป็น Full Sharing ที่ง่ายดายมากๆ  แล้วมันดีกว่าตัวอื่นยังไงล่ะ ?

                -  สามารถ commits ซอร์ซโค้ดข้ามไปเครื่องเพื่อนเราได้ ไม่ต้อง commits ไปที่เครื่อง Server
                -  เร็ว และมีขนาดเล็ก Configuration files ที่อยู่ใน working directory มีขนาดเล็กเมื่อเทียบกับยี่ห้ออื่นๆ
                -  ง่ายต่อการเรียนรู้ แต่มันใช้ Command Line (ดังนั้นคุณต้องรู้บ้างเล็กน้อยเกี่ยวกับคำสั่งพื้นฐาน Linux เช่น mkdir = สร้างโฟเดอร์ )
                -  ให้บริการ staging area เป็นพื้นที่เล็กๆ ที่จัดเก็บเฉพาะส่วนที่เราแก้ไขแล้วจัดเรียง index ไว้ เพื่อสะดวกในการ commits เฉพาะส่วน
                -  มีเว็บที่ให้บริการ GIT ซึ่งเป็น Social Coding สำหรับ developers อย่างพวกเรา เท่าที่ผมลองเล่นดูมีสองตัวคือ GitHub และ  Bitbucket

และการทำงานอีกหลายอย่างที่ที่สำคัญคือ
        1. การทำงานเกือบทุกอย่างเป็นการทำงานในเครื่องตัวเอง พราะว่าคุณจะมีประวัติการเปลี่ยนแปลงทั้งหมดของโปรเจคอยู่ในเครื่องของคุณอยู่แล้วและพร้อมที่จะทำงานได้ทันที
        2. มีความเที่ยงตรง เพราะมีการทำ Checksum แฮช(hash)แบบ SHA-1 คุณจะไม่มีทางที่จะทำข้อมูลสูญหายระหว่างการโยกย้ายหรือรับไฟล์ที่เสียหายโดย Git จะสามารถตรวจพบได้
        3. Git เพียงแต่เพิ่มข้อมูล  เมื่อคุณกระทำอะไรสักอย่างใน Git เนื้อหาเกือบทั้งหมดนั้นก็จะถูกเพิ่มเข้าไปในฐานข้อมูลของ Git เท่านั้น
        4. มีทำงานสามสถานะ คือ ยืนยันแล้ว(committed), ถูกแก้ไข(modified) และ อยู่ในขั้นตอน(staged) ซึ่ง Committed หมายถึงข้อมูลที่ถูกบันทึกเรียบร้อยแล้วในฐานข้อมูลในเครื่องของคุณ Modified หมายถึงไฟล์ของคุณได้ถูกแก้ไขแล้วแต่ยังไม่ได้ยืนยัน(commit)ลงในฐานข้อมูลของคุณ Staged หมายถึงคุณได้ทำเครื่องหมายไว้ที่ไฟล์ที่ถูกแก้ไขในเวอร์ชันปัจจุบันเพื่อที่จะรอการ commit ใน snapshot ถัดไป

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



มาถึงการเตรียมการกันบ้าง สารธยายกันไปยาวนาน  อย่างแรกเลย คุณต้องเข้าไป register เว็บที่ให้บริการ GIT ซะก่อน ผมขอยกตัวอย่าง bitbucket.org น่ะครับ


ถ้า Create ได้รูปตามด้านล่าง ก็เป็นอีนเสร็จพิธีเบื้องต้น อิอิ


ต่อไปมาในส่วนของโปรแกรมกันบ้าง เข้าไปที่ git-scm.com กด Download ก็จะได้ไฟล์ติดตั้งมาเรียบร้อยยย ที่ผมได้มาเป็น Git-1.8.1.2-preview20130201 โหลดเสร็จก็กดติดตั้งเลย คลิก Next อย่างเดียว ตามประสาคนไทย 5555 จากนั้นเมื่อติดตั้งเสร็จก็จะมี icon Git Bash บนหน้าจอ ลองเปิดดู ถ้าใช้ได้ก็เป็นอันเป็นการเสร็จเรียบร้อย

คราวนี้แหล่ะ จะได้เริ่มใช้งานจริงๆกันแว๊วว
แรกเลยจะต้องเข้า directory งานของเราก่อน (อันนี้คำสั่งพื้นฐาน unix เช่น cd,ls etc..ที่ควรจะรู้อยู่แล้ว)
จากนั้นต้องเซ็ทอัพระบบซะก่อนน

$ git config --global user.name "Your Name" 
$ git config --global user.email your.email@example.com

ลองเช็คว่าระบบได้เซ็ทเรียบร้อยหรือยัง ถ้าข้อมูลทั้งสองบรรทัดขึ้นมาแล้วก็แสดงว่าเซ็ทเรียบร้อยโดยใช้คำสั่ง

$ git config --list

จากนั้นเซ็ทให้ระบบรู้ว่า directory ที่เราอยู่เนี่ย เราจะใช้อันนี้น่ะ เมื่อเซ็ทเรียบร้อยจะเห็นคำว่า (master) ขึ้นมาทันที

$ git init

จากนั้นก็ทำการ Remote แจ้งความจำนงว่า directory ที่เราอยู่เนี่ย จะอัพไป Project ที่ Create อันไหนบนเว็บ bitbucket.org

$ git remote add origin https://<username>@bitbucket.org/<username>/<project-name>.git

ปล.ถ้าตั้งชื่อ Project เว้นวรรคไว้ git จะแปลงเป็น -

ลองเช็คอีกครั้งนึงว่าได้เซ็ทถูกต้องรึป่าว ถ้ามีบรรทัด remote.origin.url=https://<username>@bitbucket.org/<username>/<project-name>.git ขึ้นมาแล้วแสดงว่าถูกต้อง โดยใช้คำสั่ง

$ git config --list

จากนั้นทำการ add (โดยที่ . แทนตำแหน่ง directory ปัจจุบัน) ตามด้วย commit และ push

$ git add . # of single file is git add <name-file>
$ git commit -m "Initial commit"
$ git push -u origin --all
จากนั้นลองเช็คสถานะการอัพโดยใช้คำสั่ง

$ git log

ถ้าการส่งเสร็จสมบูรณ์ ก็จะขึ้นรายละเอียดมาให้เราเห็น
เพียงเท่านี้ก็เรียบร้อย งานของเราได้ถูกอัพไปแล้ว หรือจะให้ชัวร์ๆ อันเป็นการเสร็จพิธี :)


อ้ออ เกือบลืม ส่วนใครจะดึงข้อมูลลงมา(Clone) ก็เพียงเปลี่ยนคำสั่ง add เป็น clone ตามนี้เลยย
$ git clone https://<username>@bitbucket.org/<username>/<project-name>.gi

เท่านี้ก็เรียบร้อยย :D

ข้อมูลอ้างอิงเพิ่มเติม :
ruby.railstutorial.org
bitbucket.org , git-scm.com , honglub.com

Comments

Popular posts from this blog

Source file not compile Dev C++ win 8, win 8.1 , win10

เห็นใครหลายๆลง  Dev-C++ บน Windows 8,8.1,10 แล้วมันเกิดปัญหาขึ้นคือ พอเขียนโค๊ดโปรแรมเสร็จ แล้วกด Compile ปรากฏว่า โปรแกรมขึ้นแจ้งเตือน "Source file not compile" จึงหันไปลง X-Code กันเพื่อแก้ปัญหา  ผมก็อยากลองดูว่าจริงหรือเปล่า และพอจะแก้ได้ไหม เพราะว่า รุ่นน้องที่ลงแลปวิชาภาษา C ในมหาลัยผม จะสอนใช้ Text-Editor+Compiler ตัวนี้ ก็เลยไปโหลดมาติดตั้ง ปรากฏว่าเป็นจริงๆ TT ( ผมโหลดเจ้าตัว Dev-C++ 5.0 beta 9.2 (4.9.9.2) with Mingw/GCC 3.4.2มาลอง) ก็เลยลงมือแก้หาสาเหตุดู ปรากฏว่า เจอปัญหาที่ gcc ของ MinGW ใน Packet ของ DevC++ ยังเป็นรุ่นเก่า พออัพเดทใหม่แล้วได้ เลยคิดว่า สาเหตุน่าจะเกิดปัญหามาจากตัวนี้ ก็เลยเอาวิธีมาแชร์ๆกัน


Update 11/10/2014 --------------
เนื่องจาก MinGW (Minimalist GNU for Windows) ได้เปลี่ยน UI ใหม่ บางท่านอาจงง



Dev-C++ 5.0 beta 9.2 (4.9.9.2) with Mingw/GCC 3.4.2
วิธีการแก้ง่ายนิดเดียวครับ!!
ก็คือ ลง MinGW ใหม่ โหลดตามลิ้งนี้เลย  เมื่อโหลดเสร็จจากนั้นก็ทำการติดตั้งตามปกติ







[PSU] วิธีการขอ License Win 7,8,8.1,10 ของแท้ฟรี

[บทความนี้ใช้งานได้เฉพาะ น.ศ.หรือบุคลากร ม.อ.]       
       ช่วงนี้เห็นกระแสเริ่มขอ License แท้เริ่มบูมขึ้นมา ปกติจะไม่ค่อยมีใครสนใจซักเท่าไหร่ หรืออาจเป็นเพราะ เบื่อที่ต้อง Crack Windows ให้เป็นของแท้ ไม่ก็กลัวอะไรหลายๆอย่างที่เราไม่รู้ ...ก็...เป็น...ได้
        ผมว่าใคร Crack Windows เนี่ย น่ากลัวมากน่ะ เพราะโปรแกรมที่เอามา Crack เป็นของใครก็ไม่รู้ทำไว้ ยิ่งตอนติดตั้ง คุณต้องรันสิทธิเป็น Admin อีก ไม่อย่างนั้นโปรแกรมจะไม่ทำงาน คราวนี้แหล่ะฮ๊าฟโปรแกรมมันก็จะสามารถที่จะทำทุกอย่างบนเครื่องเราได้เลย โดยที่เราไม่รู้ ถ้าโชคร้ายได้ตัว Crack มาจาก Programer ไม่ประสงค์ดี ตอนติดตั้งเขาอาจใส่โปรแกรมบางอย่างมาติดตั้งในเครื่องเรา ซึ่งเราไม่รู้ (เพราะเห็นแต่หน้า UI อันสวยหรูของโปรแกรมแค่นั้น ใครจะคิดล่ะว่าหน้าตาสวยหรู จะมีสิ่งร้ายๆตามมา)  เพื่อดักข้อมูลสำคัญของเรา ยิ่งใครใช้ Internet Banking ก็งานเข้าล่ะครับพี่น้องเอ้ยย ไม่ต้องพูด แถมบางตัวไป Block Update Windows คราวนี้ซวยเลย ช่องโหว่ Windows ก็ไม่ได้ปิด  Hacker ก็เข้ามาได้ง่าย ถ้าผมจะ  Hack น่ะ ถ้าเข้าได้แล้วเม่ง จะลบข้อมูลให้หมด ทำให้วินโด้เ…

โลจิสโพสต์ ส่งรถจักรยานยนต์ หรือของใหญ่ๆ ผ่านไปรษณีย์ไทย.. ง่ายนิดเดียว

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

ซึ่งบริการของไปรณีย์ไทยที่เราจะใช้ ชื่อว่า  โลจิสโพสต์ (Logispost) รับฝากสิ่งของขนาดใหญ่ หรือมีรูปร่างพิเศษเหมาะกับการขนส่งสินค้า ซึ่งมีน้ำหนักมากหรือมีบรรจุภัณฑ์ขนาดใหญ่ เช่น จักรยานยนต์ ตู้เย็น  ทีวี เครื่องซักผ้า โดยสามารถฝากส่งและรอจ่าย ณ ที่ทำการไปรษณีย์ที่ผู้รับสะดวก และยังส่งไปต่างประเทศได้อีกด้วย โดยปกติจะใช้ระยะเวลา 5-7 วันทำการ แต่ถ้าหากต้องการความรวดเร็ว ก็ยังมีบริการ Logispost Plus ส่งด้วยภายใน 3 วัน และยังส่งถึงหน้าบ้าน!!


เริ่มเลยครับ ..

อย่างแรก เอกสารที่ต้องใช้ เตรียมถ่ายไว้เลยจะได้สะดวก ผมว่าให้ถ่ายไปสองชุดเพื่อความชัวร์
1. สำเนาทะเบียนรถที่จะส่ง (พาตัวจริงไปด้วยก็ดี เผื่อเจ้าหน้าขอดู)
2. สำเนาบัตรประชาช…