ทำไมคุณไม่ยอมรับการเปลี่ยนแปลงที่ถูกผสานทันที?


16

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

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

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

แก้ไข: ฉันไม่เชื่อว่าคำถามของฉันซ้ำกับคำถามที่เชื่อมโยง คำถามที่เชื่อมโยงกันนั้นเป็นการถามถี่ที่จะกระทำ ฉันถามว่าทำไมคนเลือกที่จะไม่ใช้คุณลักษณะเฉพาะที่เกี่ยวข้องกับการคอมมิชชันคอมมิชชันใน SourceTree



1
คุณต้องการเหตุผลที่ดีหรือไม่? เพราะฉันสามารถให้เหตุผลที่หลากหลายในการชะลอการตรวจสอบรหัสที่ฉันได้ยินคนพูดในป่า แต่บางคนมีเหตุผลที่ดี
whatsisname

เหตุผลเดียวที่ฉันคิดได้ก็คือเมื่อการผสานล้มเหลวเนื่องจากการผสานที่ขัดแย้งกัน แต่ SourceTree จะไม่ยอมทำหากมันเกิดขึ้น
Robert Harvey

ในหมายเหตุด้านข้าง: ทำไมคุณถึงเขียนบทช่วยสอนของคุณเอง? bitbucket มีบทช่วยสอนที่ดีอยู่แล้ว confluence.atlassian.com/bitbucket/…
วิงก์เบรซ

@ วิงค์เบรซเราไม่ได้ใช้ Bitbucket; เราเก็บทุกอย่างไว้ในเครือข่ายท้องถิ่น ฉันอ้างอิงการสอนที่ยอดเยี่ยมของ Atlassianแต่ฉันต้องการบางสิ่งบางอย่างที่กระชับกว่านี้ฉันสามารถมอบให้กับผู้ที่เคยชินกับ Git และการควบคุมเวอร์ชันใหม่ มันเป็นคำแนะนำและขั้นตอนการปฏิบัติจริง ๆ "นี่คือวิธีและเหตุผลที่คุณยอมรับ / ผลัก / ดึง / ฯลฯ " เพื่อให้ผู้คนสามารถเข้ามามีส่วนร่วมได้
David K

คำตอบ:


26

ฉันไม่ต้องการใช้คุณสมบัตินี้

ความจริงที่ว่าไม่มีข้อขัดแย้งนั้นมีความหมายว่าการเปลี่ยนแปลงที่ถูกรวมในสาขาของฉันนั้นไม่ได้อยู่ในรหัสบรรทัดเดียวกับที่ฉันทำ ไม่ได้หมายความว่าการเปลี่ยนแปลงเหล่านั้นเข้ากันได้กับการเปลี่ยนแปลงของฉัน ไม่ได้หมายความว่ารหัสจะรวบรวมหรือรหัสจะทำงานหรือว่าการทดสอบจะผ่าน

ในคำอื่น ๆ โดยใช้ตัวเลือกนี้ฉันอาจท้ายด้วยการกระทำผิดของรหัสที่อาจไม่อยู่ในสถานะที่ดีและต้องมีความมุ่งมั่นใหม่ในการแก้ไข ขณะที่ฉันกำลังทำงานนี้อยู่ดีและเมื่อฉันไม่ควรผลักดันการหลอกลวงนี้ขึ้นเหนือน้ำหรือแม้แต่โดยไม่ตั้งใจ (ห้ามไม่ให้ดีใครบางคนอาจรวมมันเข้ากับสาขาอื่น!) ฉันไม่เห็นเหตุผลที่จะสร้างสิ่งนี้ขึ้นในครั้งแรก สถานที่.


สมมุติว่าคุณกำลังสร้างสาขาฟีเจอร์และไม่รวมการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ เข้ากับสาขาหลัก การรวมกันไม่น่าจะทำให้เกิดความขัดแย้งในฟีเจอร์สาขาเว้นแต่ว่ามีหลายคนกำลังทำงานในคลาสเดียวกันบนฟีเจอร์สาขาเดียวกัน
Robert Harvey

4
@ RobertHarvey ใช่ แต่ฉันอาจรวมสาขาหลักเข้ากับสาขาของฉันบ่อยครั้ง มีข้อสันนิษฐานที่ซ่อนอยู่ในความคิดเห็นของคุณว่าคุณสมบัติที่แตกต่างกันจะสัมผัสกับคลาส / โมดูลที่แตกต่างกันตามธรรมชาติ แต่ไม่ใช่ทุกคนที่โชคดี โดย (mis) โชคคุณมีชั้นพระเจ้าที่ไหนที่ทุกคนที่ทำอะไรต้องสัมผัสและคุณไม่สามารถทำอะไรได้มาก นอกจากนี้ยังมีฟีเจอร์การตัดขวาง (อัพเกรดห้องสมุดบางส่วนเพราะหนึ่งใน 10 บรรทัดของรหัสที่ต้องเปลี่ยน ... ) ฉันรู้ว่าอาร์กิวเมนต์ "พยายามที่จะไม่ไปที่นั่น" แต่ถ้าคุณมีแล้ว? ปลอดภัยกว่าดีกว่าขออภัย

2

หลังจากการรวมอาจมีการเปลี่ยนแปลงไฟล์ใน repo ภายในเครื่อง การเปลี่ยนแปลงเหล่านี้จะไม่ส่งต่อไปยังโลคัลโดยอัตโนมัติเว้นแต่คุณจะตั้งค่า "ยอมรับการเปลี่ยนแปลงที่ถูกผสานทันที"

หากคุณไม่ได้ตั้งค่าตัวเลือกนั้นไฟล์จะปรากฏใน SourceTree เป็นการเปลี่ยนแปลงที่ไม่มีข้อผูกมัด

นั่นเป็นเพราะ Git เองนั้นไม่ได้ทำอะไรนอกจากคุณจะบอกอย่างชัดเจนและ SourceTree เป็น Git GUI "การกระทำการเปลี่ยนแปลงที่ผสานทันที" ตัวเลือกไม่มากตัวเลือกมันเป็นทางลัดคำสั่ง

ดังนั้นเหตุผลที่ไม่ต้องการใช้คุณสมบัตินี้คือการเห็นตัวเอง: คุณต้องการดำเนินการด้วยตนเองหรือไม่เลย

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

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


2

หากคุณใช้ hook การโพสต์เพื่อผลักดันการกระทำของคุณโดยอัตโนมัติ (เช่นใน/programming//a/7925891/6781678 ) คุณอาจต้องใช้ตัวเลือกนี้เพื่อหลีกเลี่ยงการเพิ่มคุณภาพที่น่าสงสัย

ฉันจะไม่ใช้อย่างใดอย่างหนึ่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.