我在svn中编辑了一些文件,如下所示:
$svn st
M a
M b
...
现在,我想将我的更改提交给svn,出于某种原因,我不想提交文件b
,是否有任何快速方法或命令来忽略修改后的文件b
?
最后,我使用@yzucker解决方案1,cp,还原和提交。变更列表太重了,谢谢大家。
答案 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
a
,c
,d
是您要提交的文件。
答案 4 :(得分:2)
在Windows上,您可以使用GUI客户端TortoiseSVN,只选择所需的复选框。