SVN:
1、安装SVN:sudo apt install subversion
2、检出: svn checkout 地址
3、上传新文件:svn add 文件名
svn commit -m "备注"
4、修改代码:直接输入:svn commit -m "备注"
5、删除文件:svn delete 文件名
svn commit -m "备注"
6、如果误删了文件:svn up 或者 svn revert -r version
7、查看最近5条提交日志:svn log --limit 5
8、比较本地文件与远程数据库中版本的差异:svn diff test.cpp
---------------------------------------------------------------------------------------------------
GIT:
1、安装git:sudo apt install git
2、安装ssh密钥:ssh-keygen -t rsa -C "邮箱名"
cat ~/.ssh/id_rsa.pub
在服务器的管理页面上添加此密钥
3、配置用户名和邮箱:git config --global user.name "用户名"
git config --global user.email "邮箱名"
4、克隆代码到本地:git clone 地址
5、查看区别:git diff --stat 查看哪些文件不同
git diff hello.c 查看该文件与服务器上版本的区别
git diff 版本号1 版本号2 文件名 :比较该文件两个版本之间的差异
git diff --cached 查看已经add还没有commit的改动
6、查看提交日志并显示涉及到的文件:git log --stat
查看最近提交的5条日志记录 : git log -n 5
6、添加文件:git add 文件名1
git add 文件名2
删除文件:git rm test.txt (删除文件)
git rm -r test (删除文件夹)
7、提交到本地仓库:git commit -m "备注"
8、推送到服务器:git push origin master
10、查看本地分支:git branch
11、查看远程分支:git branch -a
12、基于某版本创建分支:git branch branchname 06ff30d771305dac9f161614c6faf03911a760e2
13、推送分支到服务器:git push origin branchname
14、切换分支:git checkout branchname
15、删除分支:git branch -d branchname
16、重命名分支:git branch -m oldname newname
17、提交所有修改:git commit -m "commit message" -a
18、提交单个文件:git commit -m "commit message" readme.txt
19、从远程更新文件到本地:git pull
19、将branchname分支的修改内容合并到本地分支并提交:git merge branchname
20、手动编辑冲突文件,解决冲突:git mergetool
21、查看当前分支的状态:git status
---------------------------------------------------------------------------------------------------
svn要先update再提交;git则相反,不要先pull,直接提交,否则很可能会产生很多冲突。
整个code是一个很大的工程,我想只checkout几个指定的目录即可,因为我经常用的就只有这几个,怎么办呢?
我在网上搜了一下,找到了方法,整理记录如下:
命令行方法:
命令行操作的话,先用svn co --depth=empty 检出空文件夹,然后再从这个空文件夹中svn up filename获得所需要的文件。
(这种方法我已经亲自验证通过,脚本见附件。这样所有版本的svn我都可以很轻松的checkout到本地了,因为各个版本的svn的目录结构都是一样的)
TortiseSVN客户端方法:
1、使用TortiseSVN客户端检出所需文件的上级文件夹,在检出窗口中的“检出深度”处要选择“仅此项”,这样检出来一个空目录。
2、然后在检出的空文件夹上点右键,在弹出的TortiseSVN右键菜单中选择“版本库浏览器”,会列出该服务器上该文件夹下的所有文件。
3、点开自己关心子目录,右键,选择“更新项目至版本”,即可将该文件(夹)单独检出。SVN1.5版本以上才能实现该操作。在因为在这个以后的版中才有“update item to revision”
(这种方法我已亲自验证通过,可以在顶层文件夹update,会自动update指定的子文件夹)