ขอโทษที่ใช้พื้นที่ในการทำซ้ำคำตอบที่ได้รับก่อนหน้านี้ - แต่นี่คือสิ่งที่ฉันมักจะมีปัญหากับ
สมมติว่าฉันได้อัปเดตไฟล์ในตัวเครื่องเป็นรุ่นล่าสุดซึ่งก็คือ 854 จากนั้นฉันอยากได้รุ่นเก่ากว่า - รุ่นของไฟล์จากรุ่นก่อนหน้าไม่กี่รุ่นกล่าวว่ารุ่น 851
การคัดลอกจะใช้งานได้:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
.. อย่างไรก็ตามฉันไม่สามารถถูก grepping สำหรับ repo URL :)
การอัปเดตที่ดูเหมือนจะใช้ได้:
svn up -r 851 ./l3toks.dtx
... อย่างไรก็ตามมันยังทำเครื่องหมายสำเนาในเครื่องว่า "เช็คเอาต์ใหม่" หรือ "เหมือนกับการแก้ไขออนไลน์" (เช่นใน Tortoise / RabbitVCS คุณจะได้รับเครื่องหมายถูกสีเขียว) - ซึ่งหมายความว่าคุณไม่สามารถทำได้svn ci -m "rolled back to r 851"
: เพียงเพราะท้องถิ่นsubversion
ปฏิบัติการจะไม่สังเกตเห็นการเปลี่ยนแปลงในเครื่องและจะไม่ต้องอัปโหลดข้อมูลใด ๆ ไปยังแหล่งเก็บข้อมูลออนไลน์
และตามที่ได้ตอบไปแล้วการรวมการย้อนกลับ - แต่ในกรณีนี้เราไม่ควรพึ่งพาไวยากรณ์ทางลัด แต่รัฐเฉพาะ:
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
ฉันต้องยอมรับ - ฉันจะไม่เข้าใจประโยค " ย้อนกลับการรวม r854 ถึง r852 เป็นไฟล์ " เพื่อหมายถึง " เพิ่งได้ r851 ของไฟล์ของคุณและเขียนทับสิ่งที่คุณเคยมีในท้องถิ่น - และมันถูกทำเครื่องหมายว่าแตกต่างจากการปรับปรุงออนไลน์ล่าสุดดังนั้น คุณสามารถตรวจสอบกลับมาออนไลน์ได้ในรูปแบบ 'การย้อนกลับ' ใหม่ "แต่ฉันเดา (และหวังว่า :)) นั่นคือสิ่งที่มันทำ :)
หลังจากนี้เราสามารถใช้svn diff
เพื่อให้แน่ใจได้อย่างรวดเร็วหากเราได้รับการแก้ไขที่ถูกต้องในท้องถิ่น และไฟล์จะถูกทำเครื่องหมายด้วยเครื่องหมายอัศเจรีย์สีแดงใน Tortoise / RabbitVCS (นั่นคือแตกต่างจากเวอร์ชันล่าสุดที่มีข้อผูกมัด) และsvn ci -m "rolled back to r 851"
สามารถเรียกใช้ในเวลานี้ได้
นอกจากนี้โปรดทราบว่าในที่สุดหากคุณเปลี่ยนใจหลังจากการรวมแบบย้อนกลับ ( เช่นคุณต้องการดำเนินการกับการแก้ไข HEAD ล่าสุดต่อไปที่นี่ 854 - หลังจากที่คุณย้อนกลับไปที่ 851 ในประเทศ แต่ยังไม่ได้ย้อนกลับ ) คุณไม่ควรใช้svn up
เพราะจะบอกว่ามันเป็น " การแก้ไข 854 " อยู่แล้ว; ใช้แทนsvn revert --recursive .
หรือคล้ายกัน ...
ไชโย!
Ref: วิธีย้อนกลับการเปลี่ยนแปลงโดยใช้การโค่นล้ม - Jacob Wright - Flex, AIR, PHP, ฯลฯ
แก้ไข: ... และเห็นได้ชัดว่าผลเช่นเดียวกับsvn merge -r HEAD:851 l3toks.dtx
สามารถทำได้ด้วย:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.