Upload
-
View
514
Download
0
Embed Size (px)
Citation preview
วธิใีช้ GIT เบื้องต้น
สำ�หรบัผมท่ีเขยีนแอปพลิเคชัน่ม�ซกัระยะหน่ึงก็มโีอก�สได้ใชG้ITบอ่ยนะครบั ผมจงึขอนิย�ม
มนัว�่ตัวชว่ยในก�รจดัก�รกับเวอรช์ัน่ต่�งๆของโปรแกรม โดยเวล�ท่ีเร�เขยีนโปรแกรมอะไรซกัตัว เวล�ท่ีเร�ต้องก�รbackup ตัวโปรแกรมของเร� เร�ก็จะใชว้ธิ ีcopy/past
ลงในคอมพวิเตอรข์องเร�ใชไ่หมครบั
แต่ถ้�อยูดี่ๆถ้�ฮ�รด์ดิสของเร�มปัีญห�เร�คงไมส่�ม�รถนำ�โปรแกรมท่ีเขยีนออกม�ใชไ้ด้ และในก�รทำ�ง�นเป็นทีมท่ีเร�ต้องทำ�ง�นรว่มกับ
คนอ่ืนเร�คงไมอ่ย�กม�นัง่ก็อปลงแฟลชไดรฟ์หรอืสง่เมล์ใชไ่หมครบั
Git (ในคว�มเข�้ใจของผม) ก็เป็นเหมอืนตัวกล�งท่ีคอยชว่ยเร�ในก�รเก็บไฟล์ขอ้มูล โดยแยกเป็นแต่ละเวอรช์ัน่ และชว่ยใหเ้ร�ส�ม�รถทำ�ง�นรว่มกับคนอ่ืนได้ง่�ยขึ้น
แนะนำ�ใหอ่้�นเพิม่เติมท่ีDevAhoyGitBook
แต่ถ้�จะใหเ้ข�้ใจมนัอย�่งถ่องแท้ เร�ก็ม�ลองใช้ง�นมนัดจูรงิๆเลยดีกว�่ก่อนอ่ืนก็ไปด�วน์โหลดท่ี
https://www.git-scm.com/
เมื่อทำ�ก�รลงโปรแกรมเสรจ็เรยีบรอ้ยแล้วก็ดับเบิล้คลิกท่ีตัวgit-bashได้เลย
เมื่อเปิดม�หน้�ต�จะเป็นแบบนี้ ขนัตอนแรกเร�ต้องกำ�หนดชื่อ และอีเมล์ ซะก่อน
ทำ�ก�รเชค็โดยพมิพ์git config --list
โดยในตัวอย�่งน้ีผมจะสร�้งโฟลเดอรไ์วอั้นหนึ่งนะครบัชื่อว�่ GitTest โดยจะมไีฟล์ v1.txt
ก่อนอ่ืนผมทำ�ก�รเข�้ไปท่ีไดรฟD์ ท่ีไดเรก็ทอรีช่ื่อ GitTestสำ�หรบัใครท่ีเข�้ผิดส�ม�รถใชค้ำ�สัง่ cd.. เพื่อยอ้นกลับ หรอื cd\ เพื่อกลับไปที่ Root directory ได้นะครบั
ต่อม�เร�จะทำ�ก�รสร�้ง git repository ขึ้นม�
เปิด Show hidden files ก่อนนะครบั
จะได้โฟลเดอร ์.git แบบนี้
สถ�นะต่�งๆของ git มอีะไรบ�้ง
Untracked ไฟล์ยงัไมถ่กู track โดยgit (ไฟล์ท่ีสรา้งใหม)่
Unmodified ไฟล์อยูใ่นgitเรยีบรอ้ย และไมม่กีารปรบัแต่ง
Modified ไฟล์มกีารปรบัแต่งแต่ยงัไมไ่ด้ commit
Staged ไฟล์ท่ีอยูใ่นindex คือไฟล์ท่ีพรอ้มจะcommit
ลง Repository
เมอืเร�พมิพค์ำ�สัง่ git status เร�จะเหน็ว�่เจ�้ v1.txtอยูใ่นสถ�นะ untracked
สิง่แรกท่ีผมทำ�คือทำ�ก�รเพิม่ v1 เข�้ไปใน git Repository (* ใชใ้นกรณีท่ีจำ�น�มสกลุไฟล์ไมไ่ด้)
เมื่อทำ�ก�รเชค็จะเหน็ว�่ v1.txt อยูใ่นสถ�นะ Unmodified เรยีบรอ้ย
แต่ถ้�ในกรณีท่ีเร�มไีฟล์เยอะแบบน้ี เร�คงไมอ่ย�กม�นัง่เพิม่ทีละไฟล์หรอกนะครบั
ท�ง git เลยมคีำ�สัง่พเิศษท่ีใชส้ำ�หรบัเพิม่ไฟล์ท่ีอยูใ่นสถ�นะUntracked ทัง้หมด คือ git add -A
ในกรณีท่ีเร�ต้องก�ร untracked ไฟล์ เร�ส�ม�รถทำ�ได้โดยก�รใชค้ำ�สัง่git rm –cached ต�มด้วยชื่อไฟล์
ขัน้ต่อไปคือก�รcommit file โดยผมจะลบไฟล์ทัง้หมดท้ิงเหลือแค่
ไฟล์ v1.txt เท่�นัน้
ไฟล์จะอยูใ่นสถ�นะ deleted นะครบั เร�ก็ใชค้ำ�สัง่ git add --update เพื่ออัพเดทไฟล์นะครบั
ต่อไปก็ใชค้ำ�สัง่ commit -m ต�มด้วยขอ้คว�มท่ีใชร้ะบุเชน่เร�ได้เพิม่อะไรไปบ�้งในก�รcommit
และก็ใชค้ำ�สัง่ git log เพื่อดวู�่เร�ได้commit อะไรไปบ�้ง
หลังจ�กนัน้ลองใชค้ำ�สัง่ git status ดจูะเหน็ว�่ไฟล์v1.txt ได้ห�ยไปแล้ว ก็คือเร�ได้commitเรยีบรอ้ยแล้ว
ต่อม�ผมได้เพิม่ไฟล์ v2.txt
และได้commit เข�้สู ่git แต่ถ้�ผมต้องก�รท่ีจะดึง version เก่�ม�ใช้ผมส�ม�รถทำ�ได้โดยก�รนำ�เลข checksum เพื่ออ้�งอิงถึงversion ท่ีผมต้องก�ร
แบบนี้
กลับม�แล้วว
v1 v2
แต่ถ้�เร�ขีเ้กียจใชว้ธิแีรก ก็ส�ม�รถใชค้ำ�สัง่
git checkout HEAD~1 (โดยตัวเลขก็นับยอ้นหลังไปนะ
ครบั ว�่จะกลับไปก่ีเวอรช์ัน่)
ก�รcheckout ไมใ่ชก่�รลบนะครบัเพยีงแต่เป็นก�รยอ้นกลับไปเท่�นัน้
แต่ถ้�เร�ยอ้นกลับไปและทำ�ก�รcommitละ
สร�้งไฟล์ v3.txt ขึ้นม�แล้วcommit ซะเลย
v1 v2
ไฟล์ v2 จะยงัคงอยูน่ะครบัเพยีงแต่เร�ทำ�ก�รแตก branch
ออกไป ก็เหมอืนเร�สร�้งโลกคู่ขน�นขึ้นม�อีกโลกหน่ึงโดยไมว่�่เร�จะทำ�อะไร ก็ไมม่ผีลกับโลก
จรงิของเร�v3
โดยเร�ส�ม�รถเชค็ได้นะครบัว�่ตอนน้ีเร�อยูโ่ลกไหนด้วยก�ร
พมิพ์
ถ้�ต้องก�รกลับไปยงัโลกจรงิก็ส�ม�รถใชค้ำ�สัง่
git checkout master ได้เลย
v1 v2
เร�จะกลับไปยงั v2 นะครบั และถ้�เพื่อนๆลองใชค้ำ�สัง่ git branch
ดก็ูจะไมเ่จอเจ�้ v3 นะครบั
v3
v1 v2
เพร�ะเร�ไมไ่ด้สร�้ง branch ไวที้่ v2 แต่สร�้งไวท่ี้ v1 ต่�งห�ก ถ้�ต้องก�รไปยงัv3 ก็ใหก้ลับไปยงั
v1 ก่อนและก็ใชค้ำ�สัง่ checkout เหมอืนเดิม
v3
หลังจ�กท่ีเร�ได้ลองสร�้ง branch จ�กก�ร commit ไปแล้ว แต่ถ้�เร�ต้องก�รสร�้ง branch โดย
กำ�หนดเองในกรณีท่ีอย�กทดลองอะไรเล่นๆละ
ส�ม�รถทำ�ได้โดยใชค้ำ�สัง่ git branch ต�มด้วยชื่อลองเชค็ดก็ูจะได้แบบนี้ครบั
ก�รอัพ repository ขึ้น github
หลังจ�กท่ีเร�ได้เรยีนรูก้�รใช ้git เบื้องต้นกันไปแล้วต่อไปเร�ก็จะทำ�ก�รอัพ repository ขึ้น githubในกรณีท่ีต้องก�รทำ�ง�นเป็นทีมนะ
ครบั(จะใชตั้วอ่ืนก็ได้นะ)
ตัง้ชื่อและก็กำ�หนดร�ยระเอียดให้เรยีบรอ้ย
ถ้�ต้องก�รกำ�หนดเป็น private ต้องเสยีเงินนะครบั
ก่อนจะ push ก็ทำ�ก�รเชค็ก่อนว�่ เรยีบรอ้ยดีแล้ว
จ�กนัน้ก็ใส ่username password
เสรจ็แล้ว จะเหน็ว�่ท่ีเร� commit หรอืสร�้ง branch มกี�รแจง้ไวด้้วย
จบแล้วครบั ถ้�ใครชอบหรอืไม่ชอบ(ชอบเหอะ) ส�ม�รถติดต�ม
ได้ท่ี www.droid-wizard.blogspot.com