微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

恢复具有指定名称的所有文件

嗨,我想恢复在本地存储库中具有特定文件名的文件的所有更改。 在这种情况下AssemblyInfo.vb ,我使用的是TortoiseSVN cli。

我有以下目录结构

项目1

FILE1.TXT

我的项目

AssemblyInfo.vb中

项目2

FILE2.TXT

我的项目

AssemblyInfo.vb中

现在,当站在Root我运行命令svn.exe revert --recursive AssemblyInfo.vb和我得到的输出是:

Skipped 'AssemblyInfo.vb'

WP CLI Shell不能在Windows上工作

在Windows 7的GitBash中运行Ruby生成的`foreman`

有没有办法在PHP中打开Windows句柄?

如何运行JavaScript的Windows控制台

Windows cygwin相当于Mac OS X打开命令

我试图添加双和单*之前没有成功的文件名,是否 – --recursive / -R工作或我失踪了什么?

svn help revert提供以下输出

revert: Restore pristine working copy state (undo local changes). usage: revert PATH... Revert changes in the working copy at or within PATH,and remove conflict markers as well,if any. This subcommand does not revert already committed changes. For @R_911_4045@ion about undoing already committed changes,search the output of 'svn help merge' for 'undo'. Valid options: --targets ARG : pass contents of file ARG as additional args -R [--recursive] : descend recursively,same as --depth=infinity --depth ARG : limit operation by depth ARG ('empty','files','immediates',or 'infinity') -q [--quiet] : print nothing,or only summary @R_911_4045@ion --changelist [--cl] ARG : operate only on members of changelist ARG Global options: --username ARG : specify a username ARG --password ARG : specify a password ARG (caution: on many operating systems,other users will be able to see this) --no-auth-cache : do not cache authentication tokens --non-interactive : do no interactive prompting (default is to prompt only if standard input is a terminal device) --force-interactive : do interactive prompting even if standard input is not a terminal device --trust-server-cert : deprecated; same as --trust-server-cert-failures=unkNown-ca --trust-server-cert-failures ARG : with --non-interactive,accept SSL server certificates with failures; ARG is comma-separated list of 'unkNown-ca' (UnkNown Authority),'cn-mismatch' (Hostname mismatch),'expired' (Expired certificate),'not-yet-valid' (Not yet valid certificate) and 'other' (all other not separately classified certificate errors). --config-dir ARG : read user configuration files from directory ARG --config-option ARG : set user configuration option in the format: FILE:SECTION:OPTION=[VALUE] For example: servers:global:http-library=serf

如果我运行svn.exe revert --recursive AssemblyInfo.vb在一个目录,直接包含修改后的AssemblyInfo.vb它按预期工作。

重命名垃圾桶的垃圾桶命令?

将stderr和stdoutredirect到同一个文件的顺序

权限在编辑.bash_profile时被拒绝

在多个文件上运行命令并保持相同的名称

将input传递给不从stdin读取的应用程序

svn revert旨在帮助修复错误,不会因“帮助”用户意外或无意中删除其本地和未提交的更改而造成问题。

如果你想恢复你的SVN工作副本或目录及其所有孩子的所有变化,你可以运行svn revert . -R svn revert . -R 。 但是,如果您的工作副本混合了不想丢失的有效未提交更改以及要恢复到未修改状态的更改,则不得运行此命令。

恢复本地更改是不可逆转的操作。 因此,通过svn revert来svn revert SVN工作副本的本地更改必须谨慎。 假设你正在完成一项任务,并且还没有进行几个小时的工作。 但与此同时,您在要恢复的文件或目录中进行了一些更改。 不小心运行svn revert . -R svn revert . -R在工作副本的根目录将恢复工作副本中所有未提交的更改。

引用SVNBook | svn revert

svn revert本质上是危险的,因为它的全部目的是丢弃数据 – 也就是你未经承诺的改变。 一旦你恢复,Subversion没有办法找回那些未提交的改变。

如果你没有提供svn revert目标,它什么都不会做。 为了防止意外丢失工作副本中的更改, svn revert要求您明确提供至少一个目标。

现在,当站在根我运行命令svn.exe恢复 – 递归AssemblyInfo.vb和我得到的输出是:

svn revert不能这样工作。 认情况下,它使用--depth=empty运行,以确保它不会比用户想要的还要多。 但是用-R运行svn revert会和使用--depth=infinity运行一样。 一般来说,在这种特殊情况下 – --depth=infinity是--depth=infinity的别名,其目的是帮助用户恢复所有本地修改(例如无效合并后)。

当你用--recursive运行svn revert时,工具需要你指定工作副本中一个目录的路径,操作将恢复这个目录及其子目录中的所有更改。 如果命令的目标是文件,则不会有效果

你所寻找的是 – 目标和一些脚本。 例如,在PowerShell控制台中运行以下命令(我确信它可以在PowerShell中比在此示例中更优雅地完成):

(dir -Path "files.html" -Recurse -File).FullName | Out-File -Encoding ASCII mytargets.txt svn revert --targets mytargets.txt

dir是PowerShell中的Get-ChildItem cmdlet的别名。 在这种情况下,它抓取名为files.html的所有文件的列表,并将完整路径写入mytargets.txt文件。 然后运行svn revert从mytargets.txt读取路径,并恢复对文件进行的本地修改

我建议这种方法,而不是管道输出svn revert因为你可以(和应该)审查svn revert将处理的项目列表。 这可以帮助您确保您不会真正恢复原来的状态。

在Linux上,可以使用findutils的find和xargs命令组合完成:

find -name AssemblyInfo.vb | xargs svn revert

在Windows上,你可以安装和使用包含这些工具的Cygwin 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐