"วันนี้ฉันจะบอกคุณเกี่ยวกับโปรแกรมควบคุมเวอร์ชันยอดนิยมสองโปรแกรม: SVN และ Git"

"SVN ทำงานใกล้เคียงกับที่ฉันอธิบายไว้ในบทเรียนที่แล้ว Git ซับซ้อนกว่าเล็กน้อย และฉันวางแผนที่จะพูดถึงรายละเอียดเพิ่มเติม"

"คุณช่วยบอกลิงก์ไปยังเอกสารสำหรับ SVN และ Git ให้ฉันได้ไหม"

"แน่นอน แค่วินาทีเดียว"

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (นี่เป็นเพียงผลงานชิ้นเอก)

“งั้นกิต

"มันซับซ้อนกว่า SVN เล็กน้อย  ด้วย Git ผู้ใช้แต่ละคนจะมีที่เก็บในเครื่องของตนเองนอกเหนือจากที่เก็บเซิร์ฟเวอร์ "

“แล้วตกลงไปที่ไหน”

"ผู้ใช้มักจะยอมรับกับที่เก็บในเครื่องของตน"

"แล้วที่เก็บเซิร์ฟเวอร์ล่ะ"

"ในการซิงโครไนซ์ที่เก็บข้อมูลในเครื่องและเซิร์ฟเวอร์มีคำสั่งดึงและพุชพิเศษ

"มีเหตุผลสำหรับสิ่งนี้ บางครั้งโปรแกรมเมอร์ต้องทำงานหลายอย่างในส่วนของตัวเอง ซึ่งอาจเกี่ยวข้องกับการคอมมิตหลายร้อยครั้งก่อนที่จะเพิ่มลงในที่เก็บที่ใช้ร่วมกันได้"

"ในการทำเช่นนี้ใน SVN คุณจะต้องเริ่มต้นสาขาแยกต่างหาก แล้วจึงรวมเข้ากับลำต้น"

"ด้วย Git คุณเพียงแค่คอมมิตกับที่เก็บในเครื่องเสมอ จากนั้นส่งการเปลี่ยนแปลงทั้งหมดเป็นแบทช์ไปยังที่เก็บกลางบนเซิร์ฟเวอร์เมื่อคุณทำเสร็จแล้ว"

"วิธีนี้อาจดูมากเกินไปเล็กน้อยเมื่อคุณเขียนโค้ดเพียงเล็กน้อย แต่เมื่องานของคุณใหญ่มากจนกินเวลาหลายสัปดาห์ คุณก็เข้าใจว่าคุณไม่สามารถเขียนทั้งเวลานั้นโดยไม่ลงมือทำ"

"ทำไมคุณไม่ทำงานแค่สองสัปดาห์ แล้วส่งการเปลี่ยนแปลงของคุณไปยังเซิร์ฟเวอร์เพียงครั้งเดียว"

"โปรแกรมควบคุมเวอร์ชันให้ความสะดวกมากมาย"

"ลองนึกภาพว่าคุณกระทำทุกวัน และในวันที่ 10 คุณพบว่าการเปลี่ยนแปลงที่คุณทำในช่วงสองวันที่ผ่านมาจะไม่ทำงานตามที่วางแผนไว้ และคุณต้องการเปลี่ยนกลับเป็นรหัสที่คุณมีในวันที่ 8 และเริ่มภารกิจ ต่างกัน"

"คุณเพียงย้อนกลับการเปลี่ยนแปลงที่ทำกับที่เก็บในเครื่องในช่วงสองวันที่ผ่านมาและกลับสู่สถานะที่ต้องการ ซึ่งเรียกว่าการ ดำเนินการ ย้อนกลับ "

“คุณกำลังจะบอกว่าคุณทำได้?”

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

"สมมติว่าการแก้ไขจุดบกพร่องของใครบางคนทำให้รหัสของคนอื่นเสียหาย คุณสามารถย้อนกลับ ( ย้อนกลับ ) รหัสและดำเนินการต่อราวกับว่าการเปลี่ยนแปลงนั้นไม่เคยเกิดขึ้น"

"ตกลง เยี่ยมมาก ฉันมั่นใจ คุณช่วยแสดงตัวอย่างสองสามตัวอย่างที่แสดงให้เห็นว่าทั้งหมดนี้ทำงานอย่างไร"

"แน่นอน."

"นี่คือวิธีที่คุณโคลนที่เก็บส่วนกลางไปยังเครื่องคอมพิวเตอร์ของคุณ:"

ความมุ่งมั่นและสาขา - 1

"ดังนั้น การดำเนินการ Checkout จึงไม่จำเป็นอีกต่อไป"

"อ๋อ และนี่คือตัวอย่าง การดำเนินการ พุช :"

ความมุ่งมั่นและสาขา - 2

"และ การดำเนินการ ดึง :

ความมุ่งมั่นและสาขา - 3

“อา นั่นสมเหตุสมผลมากหรือน้อย”

"ยังไงก็ตาม มีบริการเจ๋งๆ ชื่อ GitHub"

"โปรแกรมเมอร์ทุกคนสามารถลงทะเบียนที่นั่นและสร้างที่เก็บ Git ของตนเองได้ ฉันขอแนะนำให้คุณทำความคุ้นเคยกับมันให้มากขึ้น"

"ต่อไปนี้เป็นลิงก์ที่มีประโยชน์บางส่วน:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"โปรดทราบว่ามีลูกค้า Git ค่อนข้างน้อย"

"อันดับแรก มี   GitBashซึ่งให้คุณป้อนคำสั่งข้อความ"

"จากนั้นก็มีTortoiseGitซึ่งเป็นโปรแกรมที่ดีในตัว Windows Explorer มันช่วยให้คุณทำงานกับไฟล์ในที่เก็บ Git ได้โดยตรงใน Explorer"

"IntelliJ IDEA รองรับ Git และให้คุณดำเนินการคำสั่งที่ซับซ้อนได้ทุกประเภทด้วยการคลิกเพียงไม่กี่ครั้งโดยตรงจากภายในสภาพแวดล้อม"

“แล้วฉันควรเรียนอันไหนดีล่ะ”

"ฉันขอแนะนำให้คุณรู้จักพวกเขาทั้งหมด"

"คุณจะผ่านการสัมภาษณ์และไปถึงที่ทำงาน คุณจะได้รับลิงก์ไปยัง Git ล็อกอินและรหัสผ่าน เท่านี้คุณก็ดำเนินการเอง"

"คุณหมายถึงอะไร «ด้วยตัวคุณเอง»?"

"ฉันหมายความว่าคุณจะต้องตั้งค่า Git ด้วยตัวเอง ดึงสำเนาของที่เก็บด้วยตัวเอง..."

"จากนั้นคุณจะต้องสร้างและพยายามดำเนินโครงการ"

"คำแนะนำในการสร้างมักจะอยู่ในที่เก็บ Git พร้อมกับเอกสารโครงการ"

"หัวหน้าทีมของคุณจะมาหาคุณในตอนเย็นและพูดว่า  «คุณคิดอะไรออกแล้วจนถึงตอนนี้» "

"และคุณจะพูดว่า 'ฉันพยายามตั้งค่า Git ที่นี่ แต่ยังไม่ประสบความสำเร็จเลย« คุณจะไม่ไล่ฉันออกใช่ไหม» "

"หรือในขณะที่ยังเป็นเวลาเที่ยงวัน คุณสามารถไปหาหัวหน้าทีมและพูดว่า  «ฉันติดตั้ง Git ดึงโปรเจกต์ และเรียกดูเอกสารประกอบ แต่มีไฟล์เป็นร้อยไฟล์และฉันยังไม่ได้จัดการทุกอย่าง คำแนะนำในการสร้างปัจจุบันคืออะไร'» "

"คุณรู้สึกถึงความแตกต่างไหม"

"ใช่ ในกรณีที่สอง ฉันเป็นสุดยอดโปรแกรมเมอร์ระดับร็อคสตาร์ แต่ในกรณีแรก ฉันเป็นโรโบ-ดูฟุสที่ไม่รู้ด้วยซ้ำว่าจะดึงโปรเจ็กต์จาก Git อย่างไร พูดอีกอย่างก็คือ ฉันทำพลาด ก่อนที่ฉันจะเริ่มเขียนโปรแกรมเสียด้วยซ้ำ ฉันคิดว่า หลังจากนั้นพวกเขาจะไม่ให้ฉันเขียนโค้ดด้วยซ้ำ"

"เห็นไหม คุณตอบคำถามของคุณเอง ดังนั้นจงศึกษาและหาคำตอบ ไม่มีใครจะทำเพื่อคุณ"

“เจ้าจะไม่ช่วยข้าหรือ?”

“ฉันช่วยไปแล้ว เรากำลังสอนภาษาจาวาที่นี่ เผื่อคุณลืม ส่วนอย่างอื่นคุณจัดการเอง หรือหัวของคุณแค่ดื่ม?”

"โอเค เข้าใจแล้ว ขอบคุณ บิลาโบ!"