2

CVS中恢复误提交的文件

Posted in CVS at 九月 20th, 2010 / 2 Comments »

昨天在提交文件的时候,不小心按错了回车,结果很多不该提交的文件都被提交了。还好文件不多,一个个的手动恢复了,今天整理一下恢复的过程。

事情是这样开始的:昨天快下班的时候准备把当天改好的代码提交到CVS库中,本来只需要提交一个文件的,我输入cvs ci -m”注释内容” 之后,没写文件名就按了回车。由于我是在项目的根目录下操作的,所以回车一按下去,刷刷刷的好多文件都被直接提交上去了。当时就想,这下糟了,这么多文件怎么恢复啊?赶紧查看一下提交了哪些文件,用的是这个命令:

cvs log -NS -d ">2010/09/19"

查看2010.09.19之后提交的文件。还好只有四五个文件,手动恢复吧。以c.php为例,先查看当前版本及要恢复的版本:

cvs log c.php

最新版本是1.8,就是刚才误提交的那个版本。要恢复到1.7,就是最新版本的前一个版本。把1.7下载下来:

cvs up -r1.7 c.php

这样,本地的c.php就恢复好了,现在要做的是把这个文件再提交一次。可是CVS认为你本地的文件是1.7版的,是旧版,而且没有修改过,直接提交它不认。所以要做些手脚,先备份1.7版的:

mv c.php c.php.bak

再把c.php更新到最新版本1.8:

cvs up -r1.8 c.php

然后拿1.7版覆盖1.8的:

mv c.php.bak c.php

现在CVS会认为你本地的c.php是1.8版的了,也是修改过的,所以是可以提交的。但是我提交的时候还是会提示错误:

cvs server: sticky tag `T1.8’ for file ‘c.php’ is not a branch

网上的解决方法是:

对出这个错的文件执行update -A后清掉当前的tag就可以了
(参考:http://www.cppblog.com/prayer/archive/2010/07/16/120526.html)

我没试过,我是直接编辑c.php所在目录下的CVS/Entries,删除c.php所在行尾部的“T1.8”。然后再提交:

cvs ci -m "恢复误提交的文件" c.php

最后,把日志修改一下:

cvs admin -m 1.8:"错误的提交" c.php
Published in CVS

2 Responses to “CVS中恢复误提交的文件”

  1. 九月 21st, 2010 at 12:41 下午 #网站优化

    真的很不错…..博主英明啊。。嘿嘿

  2. 九月 22nd, 2010 at 2:39 上午 #fs54

    八月中秋月儿圆,对着嫦娥表思念,心中的人啊你可看见,嫦娥也在默默祝愿,愿你生活比蜜甜!

Leave a Reply

请输入算式结果(看不清请点击图片)
(必须)