เลิกเพิ่ม svn โดยไม่คืนค่าการแก้ไขในท้องถิ่น


157

ฉันรันsvn add *และเพิ่มไฟล์จำนวนมากซึ่งไม่ควรอยู่ในที่เก็บโดยไม่ตั้งใจ ฉันยังมีการแก้ไขในบางไฟล์ที่ฉันต้องการเก็บไว้ มีวิธีง่ายๆในการเลิกทำการแก้ไขsvn addโดยไม่ต้องคืนค่าการแก้ไขในท้องถิ่นหรือไม่ คำแนะนำหลักที่ฉันเห็นใน Google คือsvn revertซึ่งควรยกเลิกการแก้ไขในท้องถิ่น

คำตอบ:


282

นั่นจะเป็น:

svn rm --keep-local

สิ่งเดียวกันเกิดขึ้นกับฉัน :-P

หลายคนแสดงความคิดเห็นว่าคุณควรใช้:

svn rm --keep-local FILENAME

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


1
สิ่งนี้ไม่มีผลกับฉัน ฉันรันโค้ดตามข้างบน (รวมถึงช่วงท้าย) จากโฟลเดอร์ฐาน ไม่แน่ใจว่าฉันทำอะไรหาย
zzz

8
หมายเหตุ: svn rm --keep-local FILENAMEท่านที่คุณต้องเพิ่มชื่อไฟล์คำสั่งเพื่อที่จะเป็น FILENAMEอาจจะใช้ * เพื่อให้ตรงกับหลายไฟล์ (ถ้าคุณพอโชคดีที่มีรูปแบบ)
Adam Badura

4
คำเตือน! - ใช้คำสั่งนี้ในขณะที่ใช้ภายนอก SVN เอาคนนอกที่แนบมาทั้งหมดเช่นกัน ...
Kostja

2
หากคุณกระทำสิ่งนี้ความมุ่งมั่นจะไม่รวมการลบไฟล์ที่เป็นปัญหาออกจาก repo
jwg

1
//, ฉันมีคำถามเดียวกันกับ jwg ฉันทำการแก้ไขบางอย่างเป็นไฟล์ควบคุม SVN ฉันต้องการให้การแก้ไขเหล่านั้นอยู่ในเครื่อง อย่างไรก็ตามฉันไม่ต้องการลบไฟล์ออกจากที่เก็บทั้งหมด ฉันแค่ไม่ต้องการที่จะผลักดันการแก้ไขในท้องถิ่นของฉันไปที่ไฟล์
Nathan Basanese

34

หากไฟล์เหล่านั้นอยู่ภายใต้ไดเร็กทอรีที่ยังไม่ถูกคอมมิตคุณสามารถลบเนื้อหาไดเร็กทอรีทั้งหมดออกจากการคอมมิทครั้งต่อไปโดยทำ:

svn delete --keep-local /path/to/directory

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

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

คุณสามารถแก้ไขการชำระเงินด้วยวิธีต่อไปนี้:

  1. สำรองไฟล์ในเครื่องของคุณ
  2. ยกเลิกการชำระเงิน SVN
  3. กู้คืนไฟล์

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

คำสั่งสุดท้ายจะสร้างระดับไดเรกทอรีพิเศษคือการสิ้นสุดกับแต่ผมคิดว่าปัญหาอยู่ในการสร้างคำสั่งสำรองข้อมูลครั้งแรกYOURDIR/YOURDIR/ YOURDIR.bak/YOURDIR/
James

เพื่อหลีกเลี่ยง rsync นั้นต้องใช้เครื่องหมายทับต่อท้ายในไดเรกทอรีต้นทาง ฉันแก้ไขคำตอบ
Brice M. Dempsey

3

ฉันมีปัญหาเดียวกันฉันบังเอิญเพิ่มไดเรกทอรี / ผ่านsvn addที่มีไบนารีและไฟล์ที่รวบรวม คำสั่งนี้จะลบไดเรกทอรี

svn rm --force <directory-name>

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

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