วันพุธที่ 6 กันยายน พ.ศ. 2560

Basic Git part 3

Basic for Commit

ขั้นตอนอันกระทำบ่อยครั้งก็คือสามข้อนี้

1. แก้ไขไฟล์ที่ working tree (working directory)
2. ทำการ stage ประดาไฟล์ที่แก้ไขทั้งหลาย (สมมติว่ามี 10 ไฟล์ แต่อาจเลือกเพื่อจะ commit แค่ 3 ไฟล์ก็ได้) จะเป็นขั้นตอนการสร้าง snapshots ให้กับไฟล์เหล่านั้น
3. ทำ commit เพื่อนำประดาไฟล์ที่ถูกทำ stage ไว้แล้วบันทึกลงในฐานข้อมูลของ git

รู้ดังนี้ก็ท่องไว้ก่อนว่า เราต้องมี git repository ซึ่งตอนนี้ให้สนใจแค่ local repository หรือก็คือแหล่งเก็บในเครื่องคอมพิวเตอร์ของเราเท่านั้น จากนั้นเราจะบอกกับ git ว่า เออเธอ เอา folder นี้แหละเป็น repository นะ แล้วเราก็จะเริ่มต้นสร้างไฟล์ บอกกับ git ว่ามีไฟล์ใหม่นะ ดูแลให้หน่อย จากนั้นก็จะแก้ไขไฟล์ที่ว่านี้ แล้วบอก git ว่า จัดการ stage นะ แล้วก็จะ commit ไฟล์นี้ลงถังในท้ายที่สุด

ใครที่ไม่เข้าใจขั้นตอนที่กล่าวมาทั้งหมดนี้ ก็ให้ย้อนไปอ่านใหม่ก่อน ผมเองก็ลองผิดลองถูก มาดูว่าที่เข้าใจมานั้นมันถูกต้องไหม

ดาวน์โหลด git ติดตั้งให้เรียบร้อยล่ะ จากนั้นผมเลือกพื้นที่ตรงนี้เป็น repo นะ


ให้เราใช้ command line เปิดเข้ามา จากนั้นพิมพ์ไปว่า

git init



สิ่งที่เกิดขึ้นคือ git มันจะเข้ามาสร้าง repo ตรงนี้ หรือกล่าวว่า folder ชื่อ my_repository นี้ก็คือ repo นั่นแหละ จะสร้างกี่ repo ก็ได้นะ เป็น 100 ถังเลยก็ได้

ถามว่าสร้างถังแบบนี้เอาไว้ทำไม ตอบง่ายๆเลยว่า ก็จะเอาไว้ทำ version control system แบบใช้เดี่ยวไงล่ะ (ใช้คนเดียวไม่แบ่ง)

ข้างในก็มีอะไรไม่รู้เยอะแยะเลย ผ่านๆ


เพื่อให้ git รู้จักกับไฟล์ใหม่นี้ นี่เรียกว่าไฟล์ต้นฉบับนะครับผม ก็ต้องบอก git ว่า นี่ๆคนนี้คือ index.html พิมพ์ไปว่า

git add *.html

คือ track ทุกไฟล์ที่ลงท้ายสกุล .html ครับ


และผมพบสิ่งนี้เกิดขึ้นใน .git มันคืออะไรกันนะ?


ทีนี้ให้เพื่อนๆทดลองพิมพ์

git status



ก็จะทราบว่า git รู้จัก index.html (track ไฟล์นี้เรียบร้อย) ต่อไปเราก็จะ commit ไฟล์นี้ พิมพ์

git commit -m "initial project version"



และผมสังเกตเห็นว่ามีสิ่งนี้เพิ่มเข้ามาครับ


หลังจากเรา commit ไฟล์แรกนี้เข้าไปแล้วพิมพ์

git status


เรียบร้อย งานถูกเก็บไว้อย่างปลอดภัยด้วย git

***พิเศษ สิ่งที่ผมมักเข้าใจผิดมาตลอดคือ
เกี่ยวกับถัง repository เพราะตั้งแต่ผมใช้คำสั่ง git clone ก็เป็นอันว่าผมได้สำเนาถังใบใหม่ออกมาแล้ว ซึ่งถ้าเราใช้ git ในระดับ local repository ในแบบที่คุยกันมา เราไม่ต้องใช้ git clone ดังนั้นลืมมันไปก่อน

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

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