什么是“git add -u”的svn等价物?

时间:2014-10-14 17:36:53

标签: git svn git-add

git add -u这样的svn中是否有等价物?基本上,暂存所有已更改/删除的文件?

2 个答案:

答案 0 :(得分:1)

没有等价物,因为SVN没有临时区域。通常的SVN工作流程是:

  1. 编辑文件或添加新文件
  2. 运行svn add <filename>告诉SVN您要开始对此文件进行版本控制(请参阅注释),如果有的话。
  3. 运行svn delete <filename>删除文件(如果有)。
  4. 运行svn commit将所有更改发送到服务器上的存储库。
  5. 因此,对已经受版本控制的文件的更改只需要将svn commit发送到远程存储库;不需要(或可能)分期。

    注意:添加文件几乎就像暂存一样,但它只是告诉下一个svn commit命令包含一个以前不属于存储库的文件。 delete命令也是如此。

答案 1 :(得分:0)

您的问题的答案是,但有几个不同的部分:

  • Subversion中没有命令会删除所有已删除的工作副本文件。每当修改文件的名称/存在时,Subversion通常都希望您使用自己的命令(svn copysvn movesvn delete);在复制或移动的情况下,这需要记录文件的历史记录,但对于删除,这纯粹是一种烦恼。

    当我遇到告诉Subversion许多删除的问题时,我通常使用以下命令。但是,如果任何路径名包含空格,则此命令不安全,如果未来版本的Subversion将列添加到status输出(这在过去已经发生过),则还需要调整此命令。 (执行此操作的“正确”方法是使用svn status --xml,但我不知道从XML中选择数据并运行命令或生成适合xargs -0的输出的常用工具。)

    svn status | grep '?' | cut -c 9- | xargs rm
    
  • 因为Subversion没有像Git那样进行暂存,所以没有暂存更改文件这样的东西。进行“非暂停”更改的唯一方法是在提交时指定明确排除这些文件的文件列表。

  • 这不是您要求的,但它是密切相关的主题且有用但却模糊不清:如果您想添加所有新文件,您可以使用以下命令:

    svn add --force .
    

    --forcesvn add选项实际上意味着“如果找到了版本化的目录,将其递归并添加其子项而不是跳过它” - 它会导致svn add .运行git add .对未跟踪文件的处理方式。