這裏記錄一下一些平時用到的svn指令操作
1. svn log
展示修正的log信息或者路徑
eg:
svn log ProjectName/Info.plist
就可以看到info.plist文件的修改歷史
2. svn diff
查看兩個文件之間的不同
- 如果直接使用svn diff,則展示當前工作區和服務器端的不同。
- 如果想要顯示特定兩個版本的不同,可以用如下寫法:
//以下就是展示7504版本和7487版本之間 info.plist文件的變化
svn diff -r 7504:7487 ProjectName/Info.plist
3. svn add
Put files and directories under version control, scheduling
them for addition to repository. They will be added in next commit.
usage: add PATH…
添加文件或者文件夾到SVN
4. svn checkout
Check out a working copy from a repository.
usage: checkout URL[@REV]… [PATH]
5. svn commit
Send changes from your working copy to the repository.
usage: commit [PATH…]
6. svn revert
Restore pristine working copy state (undo local changes).
usage: revert PATH…
回滾到以前的版本
7. svn update
Bring changes from the repository into the working copy.
usage: update [PATH…]
8. svn merge
Merge changes into a working copy.
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH]
(the ‘complete’ merge)
2. merge [-c M[,N…] | -r N:M …] SOURCE[@REV] [TARGET_WCPATH]
(the ‘cherry-pick’ merge)
3. merge SOURCE1[@REV1] SOURCE2[@REV2] [TARGET_WCPATH]
(the ‘2-URL’ merge)
notes:
revert命令顧名思義就是對修改過的東西進行回滾操作。一般有2種情況發生時需要用到回滾的操作:
1,修改過的東西沒有提交(commit)
這種情況下revert會取消之前的修改
用法:#svn revert [-R] xxx_file_dir
如果需要回滾的是一個目錄則加上-R(遞歸)可選參數
2,改動的東西並且提交了
這種情況下,用svn merge命令來進行回滾。
步驟如下:
1)執行#svn update命令保證工作區文件是最新的,比如最新版本號是20
2)然後找出要回滾的確切版本號:
執行svn log xxx_file_dir
假設根據svn log日誌查出要回滾的版本號是10,如果想要更詳細的瞭解情況,可以使用svn diff -r 20:10 [xxx_file_dir]
3)回滾到版本號10:
執行svn merge -r 20:10 xxx_file_dir
4)提交回滾:
svn commit -m "註釋..."
提交後版本變成了29
完畢
9. svn export
Create an unversioned copy of a tree.
usage: 1. export [-r REV] URL[@PEGREV] [PATH]
2. export [-r REV] PATH1[@PEGREV] [PATH2]
導出一個不包含版本控制的文件
9. svn upgrade
Upgrade the metadata storage format for a working copy.
usage: upgrade [WCPATH…]
在我們把服務器上的svn 版本號升級以後,在之前的文件下再執行svn命令時,會提示需要執行svn upgrade命令把當前的代碼由低版本的svn 上遷移到高版本的svn 上去。
直接執行svn upgrade命令就會把所有的代碼按照最新的svn 版本重新更新一遍。之後你操作所有的svn 命令都會正常運行。
10. svn ls
svn列出所有branches下的分支
$ svn ls svn://192.168.0.178/yewu/branches
或者顯示詳細內容:
svn ls svn://192.168.0.178/yewu/branches --verbose
11. UserInterfaceState.xcuserstate文件衝突
這裏要首先介紹一下xcode中一些文件的含義:
首先看下Stack Overflow上關於Xcode project和workspace之間區別
的解釋
xcshareddata:裏邊配置一些項目相關的配置,比如scheme,target等等
xcuserdata:用來存放一些xcode相關的配置,裏邊包含了一個文件UserInterfaceState.xcuserstate
,此文件是專門用來記錄用戶Xcode的一些操作,比如點擊了某個類進行編輯,或者在哪打了一個斷點什麼的。
因此,UserInterfaceState.xcuserstate
這個文件變化相當的大,而且,此文件沒必要添加到版本控制中
解決辦法:
在提交SVN的時候,忽略掉此文件,如果此文件已經添加到SVN上,那麼先在刪除服務器上刪除此文件,然後在Cornerstone
的配置中忽略掉它,那麼以後再提交的時候,就不會有這個問題了。
參考
https://blog.csdn.net/u014100559/article/details/50539232
https://blog.csdn.net/cbbbc/article/details/52585570
https://www.jianshu.com/p/69b750594d6a
https://stackoverflow.com/questions/21631313/xcode-project-vs-xcode-workspace-differences