我从CVS分支中删除了一个已签入的文件,即:
cvs remove -f file.txt
cvs commit
如何恢复文件?
答案 0 :(得分:39)
我相信:
cvs add file.txt
cvs commit file.txt
......将从阁楼中复活。
答案 1 :(得分:24)
我发现您无法使用cvs add
撤消已经投放的cvs remove
操作。所以这有效:
$ cvs remove -f file.txt
$ cvs add file.txt
但这不起作用:
$ cvs remove -f file.txt
$ cvs commit
$ cvs add file.txt
到目前为止,我发现的最简单的方法是运行cvs status file.txt
来查找修订号。然后获取修订版的内容并将其添加回:
$ cvs update -p -r rev file.txt > file.txt
$ cvs add file.txt
$ cvs commit
答案 2 :(得分:4)
cvs add
对我不起作用,因为服务器上的cvs版本很旧。我已经确认它适用于CVS版本1.11.22。
答案 3 :(得分:4)
尝试:
cvs add file.txt
cvs update file.txt
cvs commit file.txt
答案 4 :(得分:3)
鉴于Harry缺乏成功,这里是我所做的事情的成绩单,以证明上述答案有效(事先就其长度道歉):
C:\foo>dir
Volume in drive C is Local Disk
Volume Serial Number is 344F-1517
Directory of C:\foo
28/09/2008 05:12 PM <DIR> .
28/09/2008 05:12 PM <DIR> ..
28/09/2008 05:12 PM <DIR> CVS
28/09/2008 05:11 PM 19 file.txt
1 File(s) 19 bytes
3 Dir(s) 22,686,416,896 bytes free
C:\foo>cvs status file.txt
===================================================================
File: file.txt Status: Up-to-date
Working revision: 1.2 Sun Sep 28 07:11:58 2008
Repository revision: 1.2 C:\jason\CVSROOT/foo/file.txt,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
C:\foo>cvs rm -f file.txt
cvs remove: scheduling `file.txt' for removal
cvs remove: use 'cvs commit' to remove this file permanently
C:\foo>cvs commit -m "" file.txt
Removing file.txt;
C:\jason\CVSROOT/foo/file.txt,v <-- file.txt
new revision: delete; previous revision: 1.2
done
C:\foo>cvs status file.txt
===================================================================
File: no file file.txt Status: Up-to-date
Working revision: No entry for file.txt
Repository revision: 1.3 C:\jason\CVSROOT/foo/Attic/file.txt,v
C:\foo>more file.txt
Cannot access file C:\foo\file.txt
C:\foo>dir
Volume in drive C is Local Disk
Volume Serial Number is 344F-1517
Directory of C:\foo
28/09/2008 05:12 PM <DIR> .
28/09/2008 05:12 PM <DIR> ..
28/09/2008 05:12 PM <DIR> CVS
0 File(s) 0 bytes
3 Dir(s) 22,686,400,512 bytes free
C:\foo>cvs add file.txt
cvs add: Resurrecting file `file.txt' from revision 1.2.
U file.txt
cvs add: Re-adding file `file.txt' (in place of dead revision 1.3).
cvs add: use 'cvs commit' to add this file permanently
C:\foo>cvs commit -m "" file.txt
Checking in file.txt;
C:\jason\CVSROOT/foo/file.txt,v <-- file.txt
new revision: 1.4; previous revision: 1.3
done
C:\foo>more file.txt
This is a test...
C:\jason\work\dev1\nrta\foo>dir
Volume in drive C is Local Disk
Volume Serial Number is 344F-1517
Directory of C:\jason\foo
28/09/2008 05:15 PM <DIR> .
28/09/2008 05:15 PM <DIR> ..
28/09/2008 05:13 PM <DIR> CVS
28/09/2008 05:13 PM 19 file.txt
1 File(s) 19 bytes
3 Dir(s) 22,686,375,936 bytes free
显然他正在做正确的事情,但他所观察到的行为是不同的。也许由于CVS版本存在差异(我在Windows上使用1.11.22)。
答案 5 :(得分:3)
进入$ CVSROOT目录和相关的模块目录,然后是Attic, 编辑fileOfInterest,v并更改显示Dead的行;到Exp;然后将fileOfInterest,v移动到上面的目录。
已签出模块中的更新现在将恢复该文件。
答案 6 :(得分:1)
最简单但最不可能做到这一点的最佳方式是“cd&#39;进入与删除文件相同位置的CVS目录。
然后编辑名为&#34;条目&#34;。
的文件找到代表已删除文件的行。请注意,有一个&#39; - &#39;在/
之后删除&#39; - &#39;,保存文件并瞧!
哎呀,但是有效。
答案 7 :(得分:0)
这就是我的工作。我只是创建一个同名的空文件,然后添加并提交它,然后检索旧版本并重新提交。