什么,我团队中的某个人犯了"错误",删除了当前版本的团队存储库中的几个文件.是否可以将当前本地版本更新为主版本?当我点击提交时,subclipse无法识别丢失的文件以上传它们.
提前谢谢,
rAyt
哦,为了皮特的爱!迄今为止的答案 - 充其量 - 具有误导性.
从你的问题来看,听起来你正在尝试这样的事情:
svn update -r8
# ok, I can see the deleted file now
svn commit -m "I want r8 to be newest"
Run Code Online (Sandbox Code Playgroud)
除此之外不行.没有提交修改.您可以更新到较旧的版本,但不能在那里进行更改.你无法改变过去.您只能提交新版本,撤消损坏.
好的,我们假设您的存储库位于svn:// repo.这里是一个简化的例子,其中文件夹主干包含两个文件"a"和"b".我们称之为第8版(r8).
trunk # working copy of svn://repo/trunk
a
b
Run Code Online (Sandbox Code Playgroud)
JR Hacker,滑倒并意外删除b:
svn rm b
svn commit -m "oops"
Run Code Online (Sandbox Code Playgroud)
让我们调用生成的提交r9.
所以,下次从存储库更新时,
svn update
trunk
a
Run Code Online (Sandbox Code Playgroud)
b消失了!恐慌?不.这是一个版本控制系统.任何已签入的内容都可以恢复.这有两种可能性:
只需复制旧版本的文件,即它仍然存在的最新版本:8.
svn cp svn://repo/trunk/b@8 .
svn commit -m "restored b from revision 8"
Run Code Online (Sandbox Code Playgroud)
更通用的解决方案是使用合并.您可以使用此技术来撤消除杂散删除之外的更多内容.
svn merge -r9:8 . .
svn commit -m "reverted the changes made in revision 8"
Run Code Online (Sandbox Code Playgroud)
阅读此合并的方法是:
首先弄清楚需要做什么更改才能从与当前目录(第一个".")相关联的存储库文件夹(svn:// repo/trunk)的r9(back)到r8.现在,在当前目录中的工作副本上执行这些更改(第二个".").
如果您只是还原一个更改,那么语法更方便:
svn merge -c-8 . . #note the minus sign before the 8
Run Code Online (Sandbox Code Playgroud)
如果你没有从命令行使用svn,请稍微捅一下你的工具,你肯定会找到一些东西.例如,当您从工作副本中打开日志时,TortoiseSVN具有方便的"从此修订版还原更改".
| 归档时间: |
|
| 查看次数: |
6388 次 |
| 最近记录: |