คำถามติดแท็ก dvcs

DVCS ย่อมาจาก Distributed Version Control System

2
ผลของการใช้กราฟต์ใน Mercurial
เมื่อเร็ว ๆ นี้มีคำถามมากมายเกี่ยวกับการข้ามการเปลี่ยนแปลงเมื่อรักษาสาขาเผยแพร่ใน Mercurial ตัวอย่างเช่น: Mercurial: การเปลี่ยนแปลงเฉพาะสาขาจะกลับมาอีกหลังจากการรวมหุ่น เหตุใด Mercurial backouts ในสาขาเดียวจึงส่งผลกระทบต่อสาขาอื่น ๆ ตั้งแต่เปิดตัวใน 2.0 ฉันเคยสงสัยเกี่ยวกับการใช้graftเพื่อหลีกเลี่ยงปัญหานี้ ให้ต้นไม้แก้ไขดังนี้: A---B---C---D---E---F---G---H---I---J Eสมมติว่าเราจำเป็นต้องสร้างสาขาที่ปล่อยข้ามการเปลี่ยนแปลงชั่วร้าย hg update -r D hg graft "F::J" ให้เรา: A---B---C---D---E---F---G---H---I---J \ --F'--G'--H'--I'--J' Q1: เกิดอะไรขึ้นที่นี่? ฉันเข้าใจว่าtransplantจะมีการสร้างแพตช์จากF::Jนั้นจึงนำไปใช้Dแต่graftมีการกล่าวว่าจะใช้การผสาน 3 ทางแทนที่จะเป็นแพตช์ แล้ว ....... ทำงานอย่างไร? ทำไมถึงดีขึ้น? ให้บอกว่าตอนนี้ฉันแก้ไขEและรวมเข้ากับสาขาการเผยแพร่ของฉัน --E2----------------- / \ A---B---C---D---E---F---G---H---I---J---M1 \ \ --F'--G'--H'--I'--J'---------M2-- M1 เป็นการผสานแบบตรง ไม่มีอะไรพิเศษที่นั่น M2 …

2
Git ดึงจากที่เก็บอื่น
ฉันมีที่เก็บที่เรียกว่าGenericซึ่งเป็นแอปพลิเคชันทั่วไป ฉันได้แยกมันลงในที่เก็บที่เรียกว่าAcmeซึ่งสร้างขึ้นจากที่เก็บแอปพลิเคชันที่เก็บไว้Genericและเพิ่มการสร้างแบรนด์ Acme Co เข้าไป ถ้าผมทำการเปลี่ยนแปลงการทำงานหลักในGenericผมต้องการที่จะปรับปรุงพื้นที่เก็บข้อมูลมีการเปลี่ยนแปลงล่าสุดผมได้ทำเพื่อการทำงานหลักในAcme Genericฉันจะทำอย่างไร เท่าที่ฉันสามารถบอกได้ฉันพยายามรวมการเปลี่ยนแปลงที่เกิดขึ้นในที่เก็บอัพสตรีมลงในส้อมปัจจุบันเป็นหลัก หากมีความหมายอะไรฉันกำลังพยายามทำสิ่งนี้เพราะฉันมีแอปพลิเคชันทั่วไปที่ฉันสร้างขึ้นและสร้างแบรนด์ให้กับลูกค้าแต่ละราย (เช่นAcmeในตัวอย่างนี้) หากมีวิธีที่สะอาดกว่านี้โปรดแจ้งให้เราทราบ

7
ลบชุดการเปลี่ยนแปลงในเครื่องทั้งหมดและเปลี่ยนกลับเป็นโครงสร้าง
ฉันใช้ Mercurial และฉันมีปัญหาในท้องถิ่นอย่างมากโดยมีสามหัว ฉันไม่สามารถผลักดันได้และฉันแค่ต้องการลบการเปลี่ยนแปลงในเครื่องทั้งหมดของฉันและยอมรับและเริ่มต้นใหม่อีกครั้งด้วยรหัสที่สะอาดหมดจดและประวัติที่สะอาด กล่าวอีกนัยหนึ่งฉันต้องการลงท้ายด้วย (a) รหัสในเครื่องเดียวกันกับที่มีอยู่ในส่วนปลายของสาขาระยะไกลและ (b) ไม่มีประวัติของการกระทำใด ๆ ในท้องถิ่น ฉันรู้ว่าhg update -Cเขียนทับการเปลี่ยนแปลงในเครื่อง แต่ฉันจะลบคอมมิตในเครื่องได้อย่างไร? เพื่อความชัดเจนฉันไม่มีความสนใจที่จะรักษางานใด ๆ ที่ฉันทำในท้องถิ่น ฉันต้องการวิธีที่ง่ายที่สุดในการเปลี่ยนกลับไปใช้การชำระเงินในท้องถิ่นที่สะอาด

4
เหตุใดบันทึก git จึงไม่แสดงประวัติของไฟล์ที่ย้ายและฉันจะทำอย่างไรกับมัน
ฉันเปลี่ยนชื่อไฟล์สองสามไฟล์โดยใช้git mvใช้git stashดู HEAD อย่างรวดเร็ว (โดยไม่ต้องเปลี่ยน) จากนั้นก็git stash popนำล็อตทั้งหมดกลับมาอีกครั้ง การเคลื่อนไหวของฉันหายไปจากรายการคอมมิตดังนั้นฉันจึงเปลี่ยนมันใหม่git rmและข้อความคอมมิตที่อ้างว่าคอมไพล์พบว่าการเปลี่ยนชื่อเป็นการเปลี่ยนชื่อ ดังนั้นฉันจึงไม่คิดอะไรอีกแล้ว แต่ตอนนี้โพสต์คอมมิตฉันไม่สามารถรับประวัติของไฟล์ที่ย้ายได้! นี่คือสิ่งที่คอมไพล์พูดเกี่ยวกับการกระทำที่เป็นปัญหา: ~/projects% git log --summary commit de6e9fa2179ae17ec35a5c368d246f19da27f93a Author: brone Date: Wed Dec 8 22:37:54 2010 +0000 Moved R_DebugUI into runtime delete mode 100644 test/R_DebugUI_iOS.h delete mode 100644 test/R_DebugUI_iOS.m create mode 100644 system/runtime/src/R_DebugUI_iOS.h create mode 100644 system/runtime/src/R_DebugUI_iOS.m <<snip …
91 git  history  dvcs  rename  git-log 

2
จะยกเลิกการผสาน Mercurial ได้อย่างไร?
ฉันเกลียดการผสาน ฉันต้องการเปลี่ยนกลับแล้วลองอีกครั้ง มีวิธียกเลิกการผสานก่อนที่จะทำการคอมมิตหรือไม่? hg revertไม่ทำในสิ่งที่ฉันต้องการ แต่จะเปลี่ยนข้อความของไฟล์เท่านั้น Mercurial ยกเลิกความพยายามครั้งที่สองของฉันในการรวมและบ่นว่าการผสานดั้งเดิมยังคงไม่มีข้อผูกมัด มีวิธียกเลิกการผสานหลังจากhg mergeคำสั่ง แต่ก่อนที่จะคอมมิตหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.