คำตอบก่อนหน้านี้ส่วนใหญ่ใช้การรวมย้อนกลับและนั่นคือคำตอบที่ถูกต้อง อย่างไรก็ตามมีสถานการณ์หนึ่ง (ที่เพิ่งเกิดขึ้นกับฉัน) ที่มันไม่ใช่
ฉันเปลี่ยนไฟล์โดยใช้ Unix line endings เป็น DOS endings เมื่อทำการเปลี่ยนแปลงเล็กน้อยและยืนยัน สิ่งนี้สามารถยกเลิกได้อย่างง่ายดายไม่ว่าจะโดยการเปลี่ยนการสิ้นสุดบรรทัดและการคอมมิชชันอีกครั้งหรือโดยการรวมกลับ แต่มันมีผลทำให้การsvn blame
แก้ไขรายการของฉันเป็นแหล่งที่มาของทุกบรรทัดของไฟล์ (น่าสนใจ TortoiseSVN บน Windows ไม่ได้รับผลกระทบจากสิ่งนี้เพียงแค่บรรทัดคำสั่งsvn blame
)
หากคุณต้องการรักษาประวัติตามที่รายงานไว้โดยsvn blame
ฉันคิดว่าคุณต้องทำสิ่งต่อไปนี้:
- ลบไฟล์และคอมมิชชัน
- ในที่เก็บให้คัดลอกสำเนาที่ดีก่อนหน้าของไฟล์ลงในส่วนหัวแล้วคอมมิต
- กู้คืนการแก้ไขใด ๆ ที่คุณต้องการเก็บไว้
การลบนั้นค่อนข้างน่ากลัว แต่โปรดจำไว้ว่าคุณมีไฟล์ที่เก็บไว้ในที่เก็บไว้เสมอดังนั้นการกู้คืนมันจึงไม่ใช่เรื่องใหญ่ นี่คือรหัสบางส่วนเพื่อแสดงขั้นตอน สมมติว่าxxx
เป็นหมายเลขการแก้ไขของสำเนาดีล่าสุด
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
โปรดทราบว่าสำหรับการคัดลอกในพื้นที่เก็บข้อมูลปลายทางจะต้องเป็นไดเรกทอรีไม่ใช่ชื่อไฟล์