SVN:如何在提交时忽略修改后的文件?

时间:2011-12-27 11:59:31

标签: svn

我在svn中编辑了一些文件,如下所示:

$svn st
M  a
M  b
...

现在,我想将我的更改提交给svn,出于某种原因,我不想提交文件b,是否有任何快速方法或命令来忽略修改后的文件b


最后,我使用@yzucker解决方案1,cp,还原和提交。变更列表太重了,谢谢大家。

5 个答案:

答案 0 :(得分:16)

您可以使用较新的Subversion客户端的Changelist功能,如以下简短示例会话所示:

$ 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.

答案 1 :(得分:8)

唉,提交许多带有一些烦人变化的文件会忽略问题。

解决方案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中引入了破碎的代码。

答案 2 :(得分:4)

我认为没有选项可以只排除一个文件,并包含所有其他文件。在您的示例中,您可以仅包括要通过

提交的文件
svn co a -m "Only commit a"

然后将排除b。请参阅最后的示例documentation of the command

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

答案 3 :(得分:3)

如果文件b已添加到存储库,则无法再忽略它。您必须删除此文件,提交,重新创建并设置ignore属性,如下所示:

svn propset svn:ignore b .

最后一个点表示当前文件夹。

如果要仅在此提交中忽略文件,请在提交命令

中显式键入其名称
svn co a c d

acd是您要提交的文件。

答案 4 :(得分:2)

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