Tracked
ครั้งนี้ต้องบอกว่า กลับมาทบทวนกันอีกครั้ง โดยเน้นรายละเอียดไปที่เรืองของสถานะ staged
เริ่มจากเราสร้าง folder ชื่อ my_project ด้านในมี .git และ index.html
1 ก็คือถัง local repository
2 ก็คือ working derectory หรือ working tree
ก็จะประกบกับภาพนี้พอดี
คือมี 1 ถัง repo มี 1 working directory และมี staging area อยู่ภายในถัง จากนั้นผมทดลองแก้ไขไฟล์ index.html โดยเพิ่มบรรทัดนี้ลงไป
ถาม git status
แหม มันรู้ด้วยว่า เรา modified ตามทฤษฎีทุกประการ ตรงจุดนี้ให้เพื่อนๆสังเกตนะครับ เพราะเราจะเข้ารายละเอียดของเรื่องนี้
หัวข้อที่ 2.2 Git ขั้นพื้นฐาน - การบันทึกการแก้ไขใน Repository มาดูภาพฝั่งแปลไทยก่อน
มีคำว่า track เกิดขึ้นจำได้ไหม จำได้ครับ คำนี้คือเราบอกให้ git มารู้จักกับไฟล์ที่เราเพิ่งสร้าง เมื่อมันรู้จักกันก็เป็น tracked คือรู้จักกันแล้ว
การรู้จักกันแล้วก็ต้องมีสถานที่ถูกไหม สถานที่ก็หนีไม่พ้นสามแห่งที่เคยบอกไป (ก็คือ git directory (local repository), staging area, working directory) ใครตอบได้ไหมว่าหนึ่งในสามแห่งนี้คือที่ใดที่ git กับไฟล์ได้ทำความรู้จักกัน (tracked) ?
สถานที่นั้นจะเป็น working directory ได้ไหม (พยายามดูภาพข้างต้นประกอบ) ก็ไม่ได้ เพราะไฟล์สร้างตรงนี้ แต่การรู้จักกันเกิดขึ้นหลังจากนั้น
สถานที่นั้นจะเป็น git directory ได้ไหม ก็ไม่ได้ เพราะไฟล์ตอนที่สร้างขึ้นมาใหม่จะยังไม่ถูก track พอถูก tracked เรียบร้อยมันก็จะมี snapshot เป็นของตัวเอง
แล้วสถานที่นั้นคือที่ใดล่ะ? คิดไปด้วยกันสิ staging area ไงล่ะครับ
ทีนี้กลับไปดูภาพวงจรชีวิตของไฟล์ข้างต้นที่ไทยวาด มันถูกต้องไหม
ไฟล์ที่เพิ่งสร้าง git ยังไม่รู้จัก ก็คือสถานะ untracked
พอเรา track ไฟล์ด้วยคำสั่ง git add มันจึงรู้จักกัน เป็น tracked
มันต้องโยนไฟล์นี้เข้าไปในสถานที่ staging area สิ หรือก็คือ staged
กลับไปดูตำราฝรั่ง (en)
ถูกต้องเลยเห็นไหม (ดังนั้นภาพในหน้าแปลไทยไม่ถูกต้องนะครับ)
น้องหลายคนอาจยังไม่เห็นประโยชน์ของการจัดการไฟล์แบบ git หรือตั้งคำตอบในใจว่าเรื่องนี้ยังห่างไกลนัก ยังไม่ต้องสนใจ จริงๆมันก็ได้นะครับ แต่ถึงตอนนั้นจำเป็นต้องรู้ ก็ต้องแลกกับเวลาหน่อยล่ะ
และสิ่งที่มักจะสอนกันแบบผิดๆเกี่ยวกับ git คือ การพยายามอธิบายว่าแต่ละคำสั่งของ git ที่มักจะใช้บ่อยนั้นมีอะไรบ้าง
ก็จะมีนะคำสั่งนี้ คำสั่งนั้น เพื่อแบบนี้แบบนั้น ซึ่งถามว่าได้ประโยชน์ไหม ก็ตอบว่าได้ครับ คือใช้ได้ แต่ยังไม่นับว่าใช้เป็น เพราะเมื่อเกิดปัญหาอะไรขึ้นก็ตามที่คำสั่งหรือวิธีการที่ได้รับทราบมานั้นไม่ได้ผล ก็หมดหนทาง และรอคอยให้ผู้มีประสบการณ์ (สมัยนั้นของผมใช้คำว่า หัวหน้า หรือ ซีเนียร์) มาแก้ไขให้
ผมถามตัวเองว่า พวกเขารู้ได้ไง แต่ก็ไม่ค้นหาคำตอบต่อไป เพราะพอใจแล้วว่ารู้แค่นี้แหละ มาจนถึงทุกวันนี้ผมจึงเป็นคนหนึ่งที่ใช้ git ได้ แต่ใช้ไม่เป็น
เหมือนเรียนภาษาอังกฤษ (ผมถามครูคนหนึ่งมา) ว่าไปเก่งการออกเสียงได้อย่างไร ครูบอกเรียนมาสิบกว่าปีไม่ได้อะไร พ่อจับไปเรียนต่างประเทศ อยู่แค่สองปีพูดได้เลย! แหม ผมก็แอบยอครูไปว่าครูหัวดี ผมมันขี้เลื่อย
เรื่องกิต (git) นี่ก็เหมือนกัน ถ้าผมพอใจแค่อ่านภาษาไทยแล้วใช้เท่าที่เขาแปลมาแล้วจบ ผมคิดว่าผมก็ยังเป็นเด็กที่ออกเสียงภาษาอังกฤษแบบถูกต้องไม่ได้เสียที
ชอบจริงที่ตำรามันพาลงลึก ดังนั้นผมจึงพอใจจะอธิบายถึงภาพอยู่เสมอๆ เพราะการอธิบายด้วยภาพมันทำให้เราเข้าใจอะไรได้มากกว่านั่งจินตนาการอยู่ลำพังนะครับ
คืนนี้ราตรีเป็นของทุกท่าน สวัสดีครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น