อัปเดตรายการเป็นฉบับแก้ไข vs เปลี่ยนกลับเป็นรุ่นแก้ไข


161

ฉันเริ่มใช้การโค่นล้มกับ TortoiseSVN หากฉันเปิดบันทึกและคลิกขวาที่รุ่นเก่าฉันเห็นสองตัวเลือกที่ดูเหมือนว่าพวกเขาย้อนกลับไปเป็นรุ่นเก่ากว่า: "อัปเดตรายการเป็นรุ่นแก้ไข" และ "เปลี่ยนกลับเป็นรุ่นนี้"

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

ดังนั้นบอกว่าการแก้ไข HEAD เป็น 100 และฉันย้อนกลับไปที่ 95 มันจะรวมการคัดลอกที่ทำงานของฉันกลับไปที่ 95 จากนั้นฉันสามารถส่งการเปลี่ยนแปลงไปยังที่เก็บซึ่งจะสร้างการแก้ไข 101 ที่ถูกต้องหรือไม่ จะแตกต่างกันอย่างไรถ้าฉันต้องกลับไปปรับปรุงเป็นรุ่น 95 ไม่ใช่แค่การเปลี่ยนแปลงกลับจากการแก้ไขครั้งล่าสุดใช่ไหม ฉันสับสนว่าสถานะการทำงานของฉันแตกต่างจากการย้อนกลับหรืออัปเดตเป็นรุ่นเก่า

คำตอบ:


205

การอัปเดตการแก้ไขจะอัปเดตเฉพาะไฟล์งานของคุณเป็นฉบับแก้ไขที่คุณเลือก แต่คุณไม่สามารถดำเนินการในการทำงานในการแก้ไขนี้เช่น SVN จะบ่นว่า workingcopy ของคุณจะออกจากวันที่

กลับไปที่การแก้ไขนี้จะยกเลิกการเปลี่ยนแปลงทั้งหมดในสำเนาการทำงานของคุณซึ่งทำขึ้นหลังจากการแก้ไขที่เลือก (ในตัวอย่างการแก้ไข 96,97,98,99,100) สำเนาการทำงานของคุณอยู่ในสถานะถูกแก้ไขรัฐปรับเปลี่ยน

เนื้อหาไฟล์ของทั้งสอง scenarions จะเหมือนกัน แต่ในกรณีแรกที่คุณมีสำเนาการทำงานยังไม่แปรและคุณไม่สามารถกระทำการเปลี่ยนแปลงของคุณ (ตาม workingcopy ของคุณไม่ได้ชี้ไปที่หัวหมุนรอบ 100) ในกรณีที่สองคุณจะมีการปรับเปลี่ยนการทำงานสำเนาชี้ไปที่หัวและ คุณสามารถทำงานและทำงานต่อไปได้


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

5
หากคุณพยายามที่จะกระทำรายการที่มี BASE-Revision ที่เก่ากว่า HEAD คุณจะได้รับ "การกระทำที่ล้มเหลว: สำเนาการทำงานของคุณอาจล้าสมัยไปแล้ว"
Peter Parker

ทำอย่างไรupdate toและrevert to/fromจัดการกับการเปลี่ยนแปลงในท้องถิ่น (การเปลี่ยนแปลงที่ไม่ผูกมัด)
BaltoStar

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

31

เพื่อให้เข้าใจว่าสถานะสำเนาการทำงานของคุณแตกต่างกันอย่างไรในทั้งสองสถานการณ์คุณต้องเข้าใจแนวคิดของการแก้ไขฐาน :

ฐาน

หมายเลขการแก้ไขของรายการในสำเนาที่ใช้งานได้ หากรายการนั้นได้รับการแก้ไขในท้องถิ่นสิ่งนี้จะอ้างถึงลักษณะที่ปรากฏของรายการโดยไม่มีการปรับเปลี่ยนในท้องถิ่นนั้น

สำเนาการทำงานของคุณมีภาพรวมของแต่ละไฟล์ (ซ่อนไว้ในโฟลเดอร์ .svn) ในการแก้ไขฐานนี้มีความหมายเหมือนเดิมเมื่อครั้งสุดท้ายที่ดึงมาจากพื้นที่เก็บข้อมูล สิ่งนี้อธิบายได้ว่าเหตุใดสำเนาการทำงานจึงใช้พื้นที่ 2x และเป็นไปได้อย่างไรที่คุณสามารถตรวจสอบและย้อนกลับการปรับเปลี่ยนในเครื่องโดยไม่ต้องเชื่อมต่อเครือข่าย

อัปเดตไอเท็มเป็นรุ่นแก้ไขจะแก้ไขการแก้ไขพื้นฐานนี้ทำให้ BASE ล้าสมัย เมื่อคุณพยายามที่จะส่งการดัดแปลงในพื้นที่ SVN จะสังเกตเห็นว่า BASE ของคุณไม่ตรงกับที่เก็บ HEAD การมอบหมายจะถูกปฏิเสธจนกว่าคุณจะทำการอัปเดต (และอาจรวม) เพื่อแก้ไขปัญหานี้

การย้อนกลับสู่การแก้ไขจะไม่เปลี่ยน BASE มันเป็นแนวคิดที่เกือบจะเหมือนกับการแก้ไขไฟล์ด้วยตนเองเพื่อให้ตรงกับการแก้ไขก่อนหน้านี้


จากคำตอบที่ยอมรับ "เนื้อหาไฟล์ของทั้งสองสถานการณ์เหมือนกัน" เหตุใดจึงต้องกังวล คำตอบนี้อธิบายถึงความแตกต่างที่ดีที่สุดและอธิบายว่าทำไม "อัปเดต" vs-a-vis "ย้อนกลับ" ทำให้เกิดพฤติกรรมที่แตกต่างกันเมื่อพยายามกระทำ
Radarbob

ทำอย่างไรupdate toและrevert to/fromจัดการกับการเปลี่ยนแปลงในท้องถิ่น (การเปลี่ยนแปลงที่ไม่ผูกมัด)
BaltoStar

5

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

สั้น ๆ "อัปเดตเป็น" จะมีผลกับสำเนาทำงานของคุณเท่านั้น แต่ "ย้อนกลับผสานและกระทำ" จะมีผลกับที่เก็บ

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

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


5

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

หากคุณต้องการยกเลิกการเปลี่ยนแปลงก่อนหน้านี้อย่างถาวรให้ใช้ย้อนกลับเป็นการแก้ไขนี้แทน

- จากเอกสารช่วยเหลือของ TSVN

หากคุณอัปเดตสำเนาการทำงานของคุณเป็นรุ่นก่อนหน้านี้จะมีผลกับสำเนาการทำงานของคุณเองหลังจากที่คุณทำการเปลี่ยนแปลงและต้องการที่จะยอมรับคุณจะล้มเหลว TSVN จะแจ้งเตือนให้คุณอัปเดต WC ของคุณเป็นการแก้ไขล่าสุดก่อน เพื่อ rev คุณสามารถกระทำการ repository ทุกคนจะกลับไปที่ rev หลังจากที่พวกเขาทำการปรับปรุง


2

ข้อความจากการอ้างอิงของเต่า:

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

หากคุณต้องการยกเลิกการเปลี่ยนแปลงก่อนหน้านี้อย่างถาวรให้ใช้ย้อนกลับเป็นการแก้ไขนี้แทน

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

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

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

หากหลังจากดำเนินการนี้แล้วคุณตัดสินใจว่าต้องการเลิกทำการเลิกทำและรับสำเนางานของคุณกลับสู่สถานะที่ไม่ได้แก้ไขก่อนหน้านี้คุณควรใช้ TortoiseSVN →เปลี่ยนกลับจากภายใน Windows Explorer ซึ่งจะยกเลิกการแก้ไขในเครื่องโดยการย้อนกลับนี้

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


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