ดังนั้นจินตนาการต่อไปนี้เกิดขึ้น (และเราทุกคนใช้ SourceTree):
- พวกเราทุกคนล้วนทำงานจากแหล่งกำเนิด / พัฒนา
- ฉันไปพักผ่อนวันหยุดเป็นเวลาหนึ่งสัปดาห์
- เพื่อนร่วมงานของฉันทำงานในพื้นที่หลายวันที่ผ่านมาโดยไม่ต้องผสานแหล่งกำเนิด / พัฒนากลับไปที่สาขาพัฒนาท้องถิ่นของเขา
- เขาพยายามที่จะผลักดันได้รับการบอกว่าเขาจะต้องรวมก่อนแล้วจึงดึง
- เขาได้รับความขัดแย้งหยุดการคอมมิทอัตโนมัติหลังจากดำเนินการต่อ
- สมมติว่า Git เป็นเหมือน SVN เพื่อนร่วมงานของฉันจะทิ้งไฟล์ "ใหม่" ในสำเนาการทำงานของเขาและจากนั้นคอมมิวนิตี้ผสาน - เช็ดไฟล์ "ใหม่" เหล่านั้นจากหัวต้นทาง / พัฒนา
- การทำงานสัปดาห์ที่มีค่าของการพัฒนาดำเนินต่อไป
- ฉันกลับมาจากวันหยุดและพบว่างานของฉันหายไปหลายวัน
พวกเราทุกคนใหม่มากสำหรับ Git (นี่เป็นโครงการแรกของเราที่ใช้มัน) แต่สิ่งที่ฉันทำเพื่อแก้ไขคือ:
- เปลี่ยนชื่อ "พัฒนา" เป็น "develop_old"
- ผสาน develop_old เข้ากับสาขาใหม่ "develop_new"
- รีเซ็ตสาขา develop_new เป็นคอมมิชชันล่าสุดก่อนการผสานที่ไม่ดี
- เชอร์รี่เลือกแต่ละการกระทำตั้งแต่นั้นมาแก้ไขความขัดแย้งด้วยตนเอง
- กด develop_old และ develop_new ไปยังจุดเริ่มต้น
เมื่อถึงจุดนี้ develop_new คือฉันหวังว่าสำเนา "ดี" ของการเปลี่ยนแปลงทั้งหมดของเราที่มีมูลค่าการทำงานสัปดาห์ต่อมาจะถูกนำมาใช้ใหม่ ฉันยังสมมติว่า "ย้อนกลับกระทำ" จะทำสิ่งที่แปลกในการผสานโดยเฉพาะอย่างยิ่งตั้งแต่ไม่กี่สัปดาห์ข้างหน้ามูลค่าของการทำงานอยู่บนพื้นฐานของมัน - และตั้งแต่ผสานที่มีจำนวนมากของสิ่งที่เราไม่ต้องการพร้อมกับสิ่งที่เราไม่' เสื้อ
ฉันหวังว่าสิ่งนี้จะไม่เกิดขึ้นอีก แต่ถ้ามันเกิดขึ้นอีกครั้งฉันอยากรู้วิธีที่ง่ายกว่า / ดีกว่าในการแก้ไขสิ่งต่าง ๆ มีวิธีที่ดีกว่าในการยกเลิกการรวม "ไม่ดี" เมื่อมีงานจำนวนมากดำเนินการใน repo ตามการผสานนั้นหรือไม่
git log
รูปแบบที่คุณชื่นชอบพร้อมคำอธิบายประกอบที่เหมาะสมเกี่ยวกับสิ่งที่เกิดขึ้นในคอมมิชชันต่างๆ (ฉันจะทำซ้ำ / ใส่คำอธิบายประกอบgit log --graph --pretty=oneline --abbrev-commit
และไปจากที่นั่น)