2011-12-27 133 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,只是只選擇所需的複選框。