2011-12-27 110 views
13

我编辑的一些文件在SVN,像这样:SVN:如何忽略提交时的修改文件?

$svn st 
M a 
M b 
... 

现在,我要提交我的修改SVN,出于某种原因,我不希望提交文件b,有没有什么快捷方式或命令忽略修改后的文件b


最后,我用@yzucker解决方案1,CP,恢复和提交。 Changelists太重了,谢谢大家。

回答

7

唉,用一些恼人的变化提交很多文件忽略了问题。

解决方案1:复制,还原和提交

$cp b /tmp/ 
$svn revert b 
$svn commit -m 'commit message' 
$mv /tmp/b ./ 

解决方案2:拷贝,提交,逆转B的效果,再次作出b

$cp b /tmp/ 
$svn commit -m 'commit message' 
$svn merge -c -{new revision} b 
$svn commit b -m 'revert message for b' 
$cp /tmp/b ./b 

第二种方法是较少优选的,因为你介绍在svn破碎的代码。

+1

不错的主意,这应该是Subversion本身的一个特性。应该有一个标志(让它调用'-X'),它将排除文件被提交。 – mliebelt 2011-12-27 12:22:04

3

我不认为有一个选项只能排除一个文件,并包括所有其他更改。在你的例子中,你可以只包含你想要提交的文件

svn co a -m "Only commit a" 

然后会排除b。结尾处的示例请参见documentation of the command

另一个选择可能是使用changelists,但更重...

+1

我为此使用更改列表(尽管不通过命令行)。 – 2011-12-27 12:20:45

+0

如果有更改列表来定义要明确排除的文件,那可能是一个选项。但通常情况下,你有很多文件被更改(不在更改列表中),并且只希望只有1 *不* *提交... – mliebelt 2011-12-27 12:25:40

2

如果文件b已经被添加到存储库,它不可能再忽视它。你必须删除此文件,提交,重新创建并设置忽略属性是这样的:

svn propset svn:ignore b . 

最后的点表示当前文件夹。

如果你想忽略只在此提交文件,在明确输入姓名commit命令

svn co a c d 

acd你想提交文件。

+0

最后一个命令是否应该是'svn ci a c d'?这是一个解决方案,谢谢。 – fannheyward 2011-12-28 01:53:46

15

可以使用Changelist功能更新Subverion客户如在这短短的示例会话:

$ svn st 
M  a 
M  b 

$ svn cl task1 a 
$ svn cl task2 b 

$ svn st 
--- Changelist 'task1': 
M  a 
--- Changelist 'task2': 
M  b 

$ svn ci --cl task1 -m "checking in only task 1 stuff" 
Sending  a 
Committed revision 11. 
+0

什么是svn版本? – 2016-02-03 07:29:05

2

在Windows中可以使用GUI客户TortoiseSVN,只是只选择所需的复选框。