SVN使用
svn使用中,首先下载安装,这个可以在官网找到。
默认安装在programx86下。
如果整合其他IDE时
idea:可以在vcs中checkout文件,从库中下载下来,如果需要忽略的文件可以添加ignore
eclipse:需要先装上插件,
如果不整合其他的IDE建立一个空的文件夹,在文件夹内checkout作为下载所在的文件夹
使用时介绍
上传:可以直接拖动到repository的子文件夹中,或者是选择软件上方的import按钮,会弹出选项所在位置及名称,然后选择import
下载:下载也同样有两种,export和checkout,区别是,export下载的版本会作为一个独立的版本,但是checkout下载的文件会创建一个workingcopy,workingcopy会显示修改数量,白色数字为他人修改数量,灰色数字则是自己,项目开发人员一般建议checkout,如果只是查看项目,不希望影响自己的项目,可以采用export
每次上传的时候,svn会自动创建一个新的版本,当然历史版本也会保留,一旦发生重大bug或者未知问题,可以采用回滚到历史版本解决问题,svn属于集中式的版本控制工具,最新版文件存在集中服务器上,使用必须保持保持网络通畅。
重要内容
首先在上传前,必须将代码进行commit,并且保证代码能够正常运行,防止造成项目中出现未知bug
不管是git还是svn每次在上传代码前,都需要先把服务器上最新的代码拉下来或者下载下来,和本地的代码进行整合,然后再进行上传,保证不会将服务器上的代码顶掉
git使用
如果感觉上GitHub太慢,可以考虑使用gitee进行代码管理
首先进行账号的注册
接着如果是在控制台使用的话,首先创建ssh
#切换目录,MAC中目录第一个字符如果是.
的话,说明这个文件夹现在还是隐藏状态
打开git的终端,输入$ cd ~/.ssh
//检查ssh是否已经存在
#检查当前目录文件:ls
如果已经存在,可以选择将已经存在的ssh备份或者将新建的ssh移到另外的文件夹下,
#接下来的步骤是生成RSA私钥对,
#第一步在" "
中输入注册账号时候使用的邮箱
#提示输入私钥文件名称,可以直接回车执行
#提示输入密码,可以随意输入,但是要保证这次操作中能记住
$ssh-keygen -t rsa -C "xxx@xxx.com"
然后查看公钥内容
$ cat id_rsa.pub
#然后再在git上面添加ssh
#登录git之后,选择account setting–>添加ssh
title :xxx@xxx.com
key :打开生成的公钥文件(id_rsa.pub),将内容拷贝进去
git是分布式版本控制工具,每个人本地都有最新版本的文件存在,也是目前最先进的版本控制工具。
关于svn和git使用过程中出现冲突的时候
冲突意味着版本之间有不一致的地方
svn在使用时产生冲突:
如果有两个开发人员,都将服务器上资源下载到本地,然后两人分别对资源进行了修改,第一个修改了其中一些资源提交之后
1.如果第二个开发人员修改的内容和前面开发人员修改的文件是相同的,并且修改成了不同的内容,那么后面第二个开发人员就需要进行更新操作,此时会提示更新失败,需要在本地解决冲突问题,冲突发生时,本地工作副本的文件会发生变化,冲突的文件图标也会变为黄色,与冲突文件同目录下新增文件,扩展名为.mine,其内容是发生冲突时本地副本的文件内容。此时需要解决冲突:在冲突文件上点右键→Team→编辑冲突,将本地内容与冲突内容显示出来,其中左侧为本地内容,右侧为冲突内容。其中本地内容是可以修改的。
根据需要和实际情况将本地内容更正——这个过程很可能需要牵涉冲突的两位开发人员进行必要的沟通——机器与程序目前还不能完全取代人工智能。更正后文件图标会变成一个"四角形",同时冲突文件内的<<<<<<< .mine、=======以及>>>>>>> .r14等标记都会被去掉。
解决之后可以鼠标右键在冲突文件上标记已解决 team→标记已解决
此时.mine文件和.r版本号文件都会被自动删除,冲突文件的图标变为"*",表示可以提交提交文件,文件图标变为"金色圆柱体"。
2.如果修改的是不同地方的文件,服务器会将它们更新合并,可以成功上传。
git使用时产生的冲突
6.解决合并冲突
在我们合并分支的时候,有时会遇到合并冲突,然后合并失败的问题,
此时需要我们先解决冲突后才能进行合并,个人开发很少会遇到,多人
开发的时候遇到合并冲突则是日常。
一个例子,A和B在develop分支上开辟出两个分支来完成相关的
功能,A做完了,把自己的分支合并到develop分支,此时develop分支向前
移动了几次commit,接着B也完成了他的功能,想把自己分支合并到develop
分支,如果改动的文件和和A改动的文件相同的话,此时就会合并失败,
然后需要处理完冲突,才能够继续合并!简单模拟下这个例子,先试试merge!
merge分支后处理冲突打开冲突文件,然后处理冲突部分,保留什么代码你自己决定,处理完后把
<<< 和 >>> 这些去掉,处理后,然后add,然后commit即可,合并结束,接着,rebase分支后处理冲突重新来一遍,然后把A直接merge到master,再切到B,rebase master,此时出现合并冲突,这里有三个可选的操作:
git rebase --continue # 处理完冲突后,继续处理下一个补丁
git rebase --abort # 放弃所有的冲突处理,恢复rebase前的情况
git rebase --skip # 跳过当前的补丁,处理下一个补丁,不建议使用,补丁部分的commit会丢失!
1
2
3
好的,有三次补丁要处理,一个个来,处理后,接着git add 添加修改后的文件,git rebase –continue继续处理补丁,接着重复之前的过程,处理后第三个补丁是与A分支无关联的改动,所以没有冲突,所以也就直接合并了!如果合并中途出了什么差错可以git rebase –abort 恢复rebase前的状况!最后看下分支线会发现是一条直线,这是用rebase合并分支的优点。
一些git的常用命令
git init 新建一个空的仓库
git status 查看状态
git branch 查看所有分支
git branch newname 创建一个叫newname的分支
git checkout newname 切换到叫newname的分支上
git add . 添加文件
git rm -r xxx.txt 删除文件
git commit -m '注释' 提交添加的文件并备注说明
git remote add origin git@github.com:jinzhaogit/git.git 连接远程仓库
git push origin master 将本地仓库文件推送到远程仓库
git pull origin master 将远程仓库文件更新到本地仓库
git remote -v 查看远程仓库
git fetch origin master:newname 本地新建一个newname分支,并将远程origin仓库的master分支代码下载到本地newname分支
git diff newname 比较本地代码与刚刚从远程下载下来的代码的区别
git merge newname 把newname分支合并到当前分支上
git branch -d newname 删除newname分支
git log 查看变更日志
git reset --hard 版本号前六位 回归到指定版本
git pull origin master 将master分支上的内容拉到本地上
#删除本地文件后重新拉取最新
git fetch --all
git reset --hard origin/master
git pull
或
git checkout file(文件名)
#将已提交的文件忽略
git rm -r --cached node_modules
git add . -A
git commit -m "remove xxx"
git push
#添加新功能时
git checkout -b login 创建一个新的login分支并进入此分支
git status
git add .
git commit -m "xxx"
git branch
git checkout master
git branch
git merge login
git push
#把新分支添加到云端
git checkout login
git branch
git push -u origin login