【问题标题】:Undo svn add without reverting local edits撤消 svn add 而不恢复本地编辑
【发布时间】:2011-07-02 06:42:22
【问题描述】:

我不小心运行了svn add * 并添加了一堆不应该在存储库中的文件。我还对一些我想保留的文件进行了本地编辑。有没有一种简单的方法可以撤消svn add 而无需还原本地编辑?我在 Google 上看到的主要建议是 svn revert,据说它会撤消本地编辑。

【问题讨论】:

    标签: svn


    【解决方案1】:

    那就是:

    svn rm --keep-local
    

    同样的事情也发生在我身上。 :-P

    很多人评论说你应该使用:

    svn rm --keep-local FILENAME
    

    将命令应用于一个或多个文件,而不是所有文件,这可能会产生意想不到的副作用。

    【讨论】:

    • 这对我没有影响。我从基本文件夹中运行了上述代码(包括尾随句点)。不确定我是否遗漏了什么。
    • 请注意,您必须将文件名添加到命令中,以便为svn rm --keep-local FILENAMEFILENAME 可以使用 * 来匹配多个文件(如果你有幸拥有一个模式)。
    • 警告! - 在使用 svn externals 时使用此命令也会删除所有附加的外部...
    • 如果你提交这个,提交是否包括从 repo 中删除有问题的文件?
    • // ,我和jwg有同样的问题。我对一个 SVN 控制的文件进行了一些编辑。我想在本地保留这些编辑。但是,我确实想完全从存储库中删除该文件。我只是不想将本地编辑推送到文件中。
    【解决方案2】:

    您可以通过以下方式解决结帐问题:

    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/ 的初始备份命令中。
    • 为避免 rsync 需要在源目录上加上斜杠。我编辑了答案。
    【解决方案3】:

    我遇到了同样的问题,我不小心通过svn add 添加了一个包含二进制文件和编译文件的/目录。该命令实际上删除了目录。

    svn rm --force <directory-name>

    就我而言,我不需要该目录,因此可以安全删除。如果你想在应用命令之前保存文件/目录,然后将它们复制回来

    【讨论】:

      【解决方案4】:

      如果这些文件位于尚未提交的目录下,您可以通过执行以下操作从下一次提交中删除整个目录内容:

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

      但是,如果这些文件已经在存储库中并且现在包含您不想提交的更改,您可以使用更改列表提交其余文件:

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

      【讨论】:

        猜你喜欢
        • 2021-06-25
        • 1970-01-01
        • 2015-03-16
        • 2015-04-05
        • 2012-02-28
        • 1970-01-01
        • 2010-10-18
        • 2011-06-06
        • 2018-11-16
        相关资源
        最近更新 更多